ループキャンセル

ループで繰り返し動かしているものに別の動きを加えると、その加えた動きが新たにループに組み込まれてしまう。そこで一旦ループをキャンセルする。

特に、ループして動いているものに新たに別のループの動きを加えたい場合は、先のループをキャンセルしないと、二重でループがはたらき続けることになり、奇怪な動きになってしまうので注意。

例:左右に動いているたぬき。画面をタッチすると、近づいて、また左右に動く。

 // 狸を表示
 var tanuki = new ExSprite(32, 32);
 tanuki.image = core.assets["images/e_tanuki.png"];
 tanuki.x = 160 - 16;
 tanuki.y = 0;
 scene.addChild(tanuki);

 // 最初のループの動き
 tanuki.tl.moveBy(100, 0, 16);
 tanuki.tl.moveTo(160 - 16, 0, 16);
 tanuki.tl.moveBy(-100, 0, 16);
 tanuki.tl.moveTo(160 - 16, 0, 16);
 tanuki.tl.loop();
 console.log("1個目のループ");

 // タッチすると
 scene.addEventListener(Event.TOUCH_START, function(){
      // 近づく
     tanuki.tl.unloop();// 先にはたらいていた1個目のループをキャンセル
     tanuki.tl.clear(); //これを入れないと、途中で割り込めない
     tanuki.tl.moveTo(160 - 16, 240 - 16, 16);
     tanuki.tl.moveTo(160 - 16, 100, 16);
     // その後また左右にループする動き
     tanuki.tl.then(function(){
         tanuki.tl.moveBy(100, 0, 16);
         tanuki.tl.moveTo(160 - 16, 100, 16);
         tanuki.tl.moveBy(-100, 0, 16);
         tanuki.tl.moveTo(160 - 16, 100, 16);
         tanuki.tl.loop();
         console.log("2個目のループ");
     });
 });

サンプル 画面タッチでたぬきが移動して別のループに切り替わる

 

コメントを残す

メールアドレスが公開されることはありません。