GoASAPでdelay中のpauseとresumeが機能しない。
影響はHydroTween,HydroSequenceにも及ぶ。
org.goasap.utils.SequenceBaseに原因がある様子。
line:245
function resume(){}
がdelay中だと次のモーションがあってもfalseを返し処理できない。
どうもresume関数内の
line:250
if (_getCurrentStep().pause()==false) {}
の判定がダメっぽい。
delay中は_getCurrentStep().pause()がfalseを返すのが原因。
_getCurrentStep自体は処理を終えているのでfalseは正解な感じ。
次の処理(?)、delayに処理が移行しているのにモーションの処理状態しか判定していないために問題が発生しているのではないかと思う。
判定基準が足りないように思うが、処理が複雑すぎてコードを追えずどう対処するのか検討がつかない。
ちょっと強引だとは思いつつ、次のモーションがあったら_getCurrentStep().pause()==false
でもtrueになるように修正した。
org.goasap.utils.SequenceBase
line:250
old:if (_getCurrentStep().pause()==false) {
new:if (_getCurrentStep().pause()==false && !_steps[_index+1]) {
あわせてresumeの処理も修正した。
org.goasap.utils.SequenceBase
line:264
old:if (_state != PlayStates.PAUSED || _getCurrentStep().resume()==false) {
new:if ((_state != PlayStates.PAUSED || _getCurrentStep().resume()==false) && !_steps[_index+1]) {
今回の変更は副作用が出る可能性がかなりありそう。
GoASAP内のモーション管理が理解できずどこを修正すれば良いのか正確に分からない。
とりあえずpause,resumeは動作している、のでイッカ。
HydroSequenceとstop,pause,resumeのサンプル。
HydroSequenceはHydroSequence, stop, pauseができないをFixするが追加されている。
stop : Sequenceを停止して1秒後に1.5秒かけて初期値に戻る
pause : Sequenceを一時停止
resume : Sequenceを再開
*pauseをクリックしないとresumeできないように制限した。
goItem = new HydroSequence( [ {target:target0, color:0xff0000}, {target:target1, color:0xff0000,delay:0.1}, {target:target2, color:0xff0000,delay:0.2}, {target:target3, color:0xff0000,delay:0.3}, {target:target4, color:0xff0000,delay:0.4}, {target:target5, color:0xff0000,delay:0.5}, {target:target6, color:0xff0000,delay:0.6}, {target:target7, color:0xff0000,delay:0.7}, {target:target8, color:0xff0000,delay:0.8}, {target:target9, color:0xff0000,delay:0.9} ], [ {target:[target0,target1,target2,target3,target4,target5,target6,target7,target8,target9], y:230,rotation:360*3,duration:1.2,delay:0.2} ], [ {target:target0, color:0xffff00}, {target:target1, color:0xffff00,delay:0.1}, {target:target2, color:0xffff00,delay:0.2}, {target:target3, color:0xffff00,delay:0.3}, {target:target4, color:0xffff00,delay:0.4}, {target:target5, color:0xffff00,delay:0.5}, {target:target6, color:0xffff00,delay:0.6}, {target:target7, color:0xffff00,delay:0.7}, {target:target8, color:0xffff00,delay:0.8}, {target:target9, color:0xffff00,delay:0.9} ], [ {target:[target0,target1,target2,target3,target4,target5,target6,target7,target8,target9], alpha:0,delay:0.3} ], [ {target:[target0,target1,target2,target3,target4,target5,target6,target7,target8,target9], alpha:1} ], [ {target:target0, color:0xffffff,y:50,rotation:-720}, {target:target1, color:0xffffff,y:50,rotation:-720,delay:0.1}, {target:target2, color:0xffffff,y:50,rotation:-720,delay:0.2}, {target:target3, color:0xffffff,y:50,rotation:-720,delay:0.3}, {target:target4, color:0xffffff,y:50,rotation:-720,delay:0.4}, {target:target5, color:0xffffff,y:50,rotation:-720,delay:0.5}, {target:target6, color:0xffffff,y:50,rotation:-720,delay:0.6}, {target:target7, color:0xffffff,y:50,rotation:-720,delay:0.7}, {target:target8, color:0xffffff,y:50,rotation:-720,delay:0.8}, {target:target9, color:0xffffff,y:50,rotation:-720,delay:0.9} ] ); goItem.start(); |
2ステップ目の delay:0.2 中だとpause,resumeが機能しない件はとりあえずFixできた、ように見える。
*公式情報ではありません
参考にされる方は自己責任でお願いします。
ピンバック: イナヅマtvログ » HydroSequence アップデート, GoASAP r60 と動作チェック(1)