現在CreateJSのTweenJSを使ってcanvas内の画像にアニメーションをつけています。
似たような画像が複数あり、一つ目の移動が完了したらその次の画像の移動をさせるというもので、
forを使ったループでやりたいのですが、そのまま書くとすべての画像が一斉に動いてしまいます。
for(i=0;i<5;i++){
var tween = createjs.Tween.get(box[i], {loop:false});
tween[i].to(移動処理);
}
(一部省略)
jQueryではqueueで行なっていたのですが、動作が完了するまで次の動作を行わない場合、
TweenJSではどのようにすればよいのでしょうか?
No.2ベストアンサー
- 回答日時:
A No1です。
>ループを使う関係上ちょっと都合がわるいので~~
callbackで行なうのが一番簡単だと思いますが、どうしてもループで処理したいのなら…
アニメーションに要する時間があらかじめわかっているのなら、
その時間経過後に次のアニメーションを行なうように、ループの中でsetTimeout等で処理を設定するといった方法があり得ます。
ただし、この方法だとアニメーションの時間が正確かどうかなどによって、動作にラップやギャップが生じてしまう可能性があり、怪しさがあります。
(私はTweenJSの内容を存じませんので、判断できませんが…)
もっとまともな方法を考えるなら、
>jQueryではqueueで行なっていたのですが~~
queueと同じような関数を作っておいて、ループ内からはそちらを呼び出すようにすれば良いのではないでしょうか?
(一般化して作成するのは面倒でも、限定した関数なら比較的簡単にできると思います)
TweenJSを知らないので、かなり適当ですが…
var myQueue = function(element, property, func){ ~~ }
みたいにしておいて、ループ内からは
myQueue(box[i], {loop:false}, function(){tween[i].to(移動処理);} );
のような呼び出し方をするといったもので良いのでは?
結局はcallbackを利用していますが、myQueueの処理内容は以下のような感じ。
対象要素ごとにスタックを作成しfuncをスタックしておいて、既存のスタックがなければ、callbackでスタックの次の内容を実行するようにセットして最初のアニメーションを実行する。
といったものでもいけると思います。
(↑に書いたままだと、作り方によっては、tween[i]の「i」の値が保存されない可能性がありますが…
)
ありがとうございます。
JSソース自体をPHPで動的に生成するのでなるべくcallbackを使わずにシンプルに出来ればいいなと思っていましたが、かえって複雑になってしまいそうですね。
かかる秒数は一定なのでご意見の通り同じ秒数でウェイトさせる(TweenJSにはwaitという関数が有りました)を使って擬似的に連続させてみようと思います。
今回は厳密な秒数の一致は必要ありませんが今後のためにcallbackを簡単に扱えるような方法も検討してみようと思います。
No.1
- 回答日時:
TweenJSはまったく存じませんので、検索してみただけの情報ですが…
各処理にcallbackを指定できるようになっているようですので、それを利用できないのでしょうか。
http://www.createjs.com/Docs/TweenJS/modules/Twe …
回答有り難うございます。
callbackでもできそうですがforのループを使う関係上ちょっと都合がわるいのでこの方法では難しそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- 英語 中3の英語についてです。 have been 〜ing (現在完了進行形)の使い道がよくわかりません 8 2022/06/08 18:02
- Visual Basic(VBA) PowerPoint VBA で画像の鮮明度を変更する方法がわかりません 2 2023/03/24 13:34
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- Android(アンドロイド) AQUOS ZEROの使い方教えて下さい 2 2022/03/27 17:21
- 写真・ビデオ 壊れたパソコンのデータ移行について 3 2023/06/04 18:06
- Instagram インスタの画像を複数枚投稿出来るものと出来ないものがある問題についてどなたか教えて下さい。 インスタ 4 2022/06/07 13:53
- USTREAM 映像・動画編集にお詳しい方、教えて下さい。 2 2023/03/05 07:22
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
- システム パソコンの共有フォルダ移動について教えてください。 2 2022/04/07 10:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
DoEventsが必要な理由について
-
GIFアニメをループさせたくない
-
vba
-
アクティブセルから、A列最終行...
-
VBA Dir関数でファイルをループ...
-
流れ図(フローチャート)が分か...
-
DOSコマンドのループ内のTIMEコ...
-
Application.OnTime の使い方
-
ループフリー
-
VBA for文が止まらない
-
vb.netからエクセル関数書き込み
-
csh foreachで「*」でエラ...
-
一巡伝達関数と開ループ伝達関数
-
VBA for i=1 to lastrow
-
VB.NETで素因数分解のプログラ...
-
ループ内での条件処理
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
ループ7回目の悪役令嬢は、元敵...
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
エクセルの当番表を作っていま...
-
GIFアニメをループさせたくない
-
VBAで3秒だけ時間を止めたい
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
DOSコマンドのループ内のTIMEコ...
-
ListBox 複数選択 で オートフ...
-
vbscriptでIE自動入力(途中で...
-
vb.netからエクセル関数書き込み
-
DoEventsが必要な理由について
-
Java 南京錠
-
アクティブセルから、A列最終行...
-
テキストボックスの名前に変数...
-
範囲指定したセルを1つずつ飛...
-
VBA Dir関数でファイルをループ...
おすすめ情報