mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 12:29:55 +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 _fFns: Function[];
|
||||||
private _fOnceFns: Function[];
|
private _fOnceFns: Function[];
|
||||||
private _wChg: boolean = false;
|
private _wChg: boolean = false;
|
||||||
private _rv: boolean;
|
private _rv: boolean = false;
|
||||||
private _unregTrans: Function;
|
private _unregTrans: Function;
|
||||||
private _tmr: number;
|
private _tmr: number;
|
||||||
private _lastUpd: number = 0;
|
private _lastUpd: number = 0;
|
||||||
|
|
||||||
public isPlaying: boolean;
|
public isPlaying: boolean = false;
|
||||||
public hasTween: boolean;
|
public hasTween: boolean = false;
|
||||||
|
public hasCompleted: boolean = false;
|
||||||
|
|
||||||
constructor(ele?: any, opts: AnimationOptions = {}) {
|
constructor(ele?: any, opts: AnimationOptions = {}) {
|
||||||
this._reset();
|
this._reset();
|
||||||
@ -57,9 +58,6 @@ export class Animation {
|
|||||||
this._fOnceFns = [];
|
this._fOnceFns = [];
|
||||||
|
|
||||||
this._clearAsync();
|
this._clearAsync();
|
||||||
|
|
||||||
this.isPlaying = this.hasTween = this._rv = false;
|
|
||||||
this._easing = this._dur = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
element(ele: any): Animation {
|
element(ele: any): Animation {
|
||||||
@ -687,13 +685,14 @@ export class Animation {
|
|||||||
|
|
||||||
_onFinish(hasCompleted: boolean) {
|
_onFinish(hasCompleted: boolean) {
|
||||||
this.isPlaying = false;
|
this.isPlaying = false;
|
||||||
|
this.hasCompleted = hasCompleted;
|
||||||
var i: number;
|
var i: number;
|
||||||
|
|
||||||
for (i = 0; i < this._fFns.length; i++) {
|
for (i = 0; i < this._fFns.length; i++) {
|
||||||
this._fFns[i](hasCompleted);
|
this._fFns[i](this);
|
||||||
}
|
}
|
||||||
for (i = 0; i < this._fOnceFns.length; i++) {
|
for (i = 0; i < this._fOnceFns.length; i++) {
|
||||||
this._fOnceFns[i](hasCompleted);
|
this._fOnceFns[i](this);
|
||||||
}
|
}
|
||||||
this._fOnceFns = [];
|
this._fOnceFns = [];
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,35 @@ class E2EPage {
|
|||||||
a.easing(this.easing);
|
a.easing(this.easing);
|
||||||
a.play();
|
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()">
|
<button ion-item (click)="playGreen()">
|
||||||
Play
|
Play
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<button ion-item (click)="memoryCheck()">
|
||||||
|
Memory Check
|
||||||
|
</button>
|
||||||
</ion-list>
|
</ion-list>
|
||||||
|
|
||||||
</ion-content>
|
</ion-content>
|
||||||
|
@ -1081,13 +1081,13 @@ export class NavController extends Ion {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create a callback for when the animation is done
|
// create a callback for when the animation is done
|
||||||
transAnimation.onFinish((hasCompleted: boolean) => {
|
transAnimation.onFinish((trans: Transition) => {
|
||||||
// transition animation has ended
|
// transition animation has ended
|
||||||
|
|
||||||
// destroy the animation and it's element references
|
// 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
|
// cool, let's do this, start the transition
|
||||||
|
Reference in New Issue
Block a user