見出し画像

【Egret】Exmlアニメーションのコールバック

Tweenはコールバックできるじゃないですか

egret.Tween.get(this.animation)
.to({x:50},500)
.call(function(){console.log("ここみたいなやつ");});

でもExmlアニメーションだと

this.animation.play(0);

この書き方しかないんで、
ずっとExmlアニメーションはコールバックできないもんだと思ってたんですけど

this.animation.addEventListener('complete',this.Complete,this);

天才か?
これでアニメーションの終了を待ってから処理できることを知りまして。
喜び勇んで処理を書き込んだんですね。

そしたら、あれれ?おかしいぞ~?

console
MainUI.ts:850 アニメーション開始
MainUI.ts:928 アニメーション終了
MainUI.ts:850 アニメーション開始
MainUI.ts:850 アニメーション開始
MainUI.ts:928 アニメーション終了
MainUI.ts:850 アニメーション開始
MainUI.ts:850 アニメーション開始

2回に1回completeが呼ばれないんじゃが……
めちゃくちゃ調べていたら、とある中国サイトに気になる言葉を見つけました。

注意:egret.tween.Group中如果你添加某一项属性,但是没有动画帧的话,动画在播放的时候是不能监听到完成回调的
アニメーションにキーフレームがなかったら、コールバック呼べんよ!だって監視するキーフレームがないんだからね!って。

え、まって?もしかして

画像1

こういうこと…!?

画像2

console
MainUI.ts:850 アニメーション開始
MainUI.ts:928 アニメーション終了
MainUI.ts:850 アニメーション開始
MainUI.ts:928 アニメーション終了
MainUI.ts:850 アニメーション開始
MainUI.ts:928 アニメーション終了

ちゃんと動くようになりました^^

とにかくExmlアニメーションの終了待ちできる喜びに打ち震えたね。


この記事が気に入ったらサポートをしてみませんか?