customActionWithDuration:actionBlock:
がよくわからん。
書き方は以下のとおりで、duration値の秒数だけblock構文を繰り返すというもの。
elapsedTimeというのは処理の経過時間秒数。
SKAction *action = [SKAction customActionWithDuration:5
actionBlock:^(SKNode *node, CGFloat elapsedTime) {
SKAction *ac = [SKAction rotateByAngle:M_PI duration:5.0];
[node runAction:[SKAction repeatActionForever:ac]];
}];
上の場合、5秒間spriteを回転させるコード。
rotateByAngleのdurationが同じ5秒なので、5秒かけてゆっくり180度回転して止まってくれると思ってた。
しかし実際やってみると、spriteが高速回転して止まらない。
repeatActionForeverを使わないと、5秒経過後、しばらくして止まる。でも高速回転に変わりなし。
durationを設定するメソッドが入れ子になるせいで、処理がおかしくなるんだろうな。
中に変数を使った計算をする処理を入れたら、途中からありえないでかい値になったこともあった。
customActionWithDuration:0
にしたところ、正常動作した。
おそらく0ということはcustomActionWithDurationメソッドは実行されず、block中のActionだけが実行されたから動いたんじゃないかと思う。
じゃあcustomActionWithDuration使う意味ないけどね。
まだよくわからん。
0 件のコメント:
コメントを投稿