mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 20:33:32 +08:00
chore(animation): pass instance to onFinish callbacks
This commit is contained in:
@ -23,13 +23,14 @@ export class Animation {
|
||||
private _fFns: Function[];
|
||||
private _fOnceFns: Function[];
|
||||
private _wChg: boolean = false;
|
||||
private _rv: boolean;
|
||||
private _rv: boolean = false;
|
||||
private _unregTrans: Function;
|
||||
private _tmr: number;
|
||||
private _lastUpd: number = 0;
|
||||
|
||||
public isPlaying: boolean;
|
||||
public hasTween: boolean;
|
||||
public isPlaying: boolean = false;
|
||||
public hasTween: boolean = false;
|
||||
public hasCompleted: boolean = false;
|
||||
|
||||
constructor(ele?: any, opts: AnimationOptions = {}) {
|
||||
this._reset();
|
||||
@ -57,9 +58,6 @@ export class Animation {
|
||||
this._fOnceFns = [];
|
||||
|
||||
this._clearAsync();
|
||||
|
||||
this.isPlaying = this.hasTween = this._rv = false;
|
||||
this._easing = this._dur = null;
|
||||
}
|
||||
|
||||
element(ele: any): Animation {
|
||||
@ -687,13 +685,14 @@ export class Animation {
|
||||
|
||||
_onFinish(hasCompleted: boolean) {
|
||||
this.isPlaying = false;
|
||||
this.hasCompleted = hasCompleted;
|
||||
var i: number;
|
||||
|
||||
for (i = 0; i < this._fFns.length; i++) {
|
||||
this._fFns[i](hasCompleted);
|
||||
this._fFns[i](this);
|
||||
}
|
||||
for (i = 0; i < this._fOnceFns.length; i++) {
|
||||
this._fOnceFns[i](hasCompleted);
|
||||
this._fOnceFns[i](this);
|
||||
}
|
||||
this._fOnceFns = [];
|
||||
}
|
||||
|
@ -22,6 +22,35 @@ class E2EPage {
|
||||
a.easing(this.easing);
|
||||
a.play();
|
||||
}
|
||||
|
||||
memoryCheck() {
|
||||
let self = this;
|
||||
let count = 0;
|
||||
|
||||
function play() {
|
||||
count++;
|
||||
if (count >= 100) {
|
||||
console.log('Play done');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('Play', count);
|
||||
|
||||
let a = new Animation('.green');
|
||||
a.fromTo('translateX', '0px', '200px');
|
||||
a.duration(self.duration);
|
||||
a.easing(self.easing);
|
||||
a.onFinish((animation) => {
|
||||
setTimeout(() => {
|
||||
play();
|
||||
}, 100);
|
||||
animation.destroy();
|
||||
});
|
||||
a.play();
|
||||
}
|
||||
|
||||
play();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,6 +28,10 @@
|
||||
<button ion-item (click)="playGreen()">
|
||||
Play
|
||||
</button>
|
||||
|
||||
<button ion-item (click)="memoryCheck()">
|
||||
Memory Check
|
||||
</button>
|
||||
</ion-list>
|
||||
|
||||
</ion-content>
|
||||
|
@ -1081,13 +1081,13 @@ export class NavController extends Ion {
|
||||
}
|
||||
|
||||
// create a callback for when the animation is done
|
||||
transAnimation.onFinish((hasCompleted: boolean) => {
|
||||
transAnimation.onFinish((trans: Transition) => {
|
||||
// transition animation has ended
|
||||
|
||||
// destroy the animation and it's element references
|
||||
transAnimation.destroy();
|
||||
trans.destroy();
|
||||
|
||||
this._afterTrans(enteringView, leavingView, opts, hasCompleted, done);
|
||||
this._afterTrans(enteringView, leavingView, opts, trans.hasCompleted, done);
|
||||
});
|
||||
|
||||
// cool, let's do this, start the transition
|
||||
|
Reference in New Issue
Block a user