
現在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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでの一時停止と再開の方法
-
UWSCに制限時間を付けたいです
-
ダイアログのテキストにマウス...
-
VBAで3秒だけ時間を止めたい
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
Providence PEC-02 接続方法
-
再帰関数のインライン展開
-
スレッド起動したフォームを正...
-
VBA for i=1 to lastrow
-
Delphi for文
-
WinAPI「MsgWaitForMultipleObj...
-
UWSCのスクリプトで行き詰って...
-
VB2010でCSVファイルの読み込み
-
Pro Tools の 波形を伸ばす方...
-
範囲指定したセルを1つずつ飛...
-
ループ内での条件処理
-
Do whileでExitせず、ループの...
-
vbscriptでIE自動入力(途中で...
-
【VBA】全て空白のセルの列の非...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
UWSCに制限時間を付けたいです
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
流れ図(フローチャート)が分か...
-
DOSコマンドのループ内のTIMEコ...
-
pythonでファイルのコメント行...
-
素数表について。
-
VBAでの一時停止と再開の方法
-
「偶数・奇数の和」のフローチ...
-
DoEventsが必要な理由について
-
vb.netです。2次元配列の要素を...
-
Do whileでExitせず、ループの...
-
ループフリー
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
おすすめ情報