5月 11 2009
HydroSequence アップデート GoASAP r60 と動作チェック(1), HydroSequence, GoASAP r60 と動作チェック(2)、でわかったGoASAPのシーケンス処理時の dylay / resume バグに対処してみた。
対処療法だけど・・・
delay時に pause した時の SequenceCA.state が PlayStates.PLAYING になってることが原因っぽい。
SequenceCA.state が PlayStates.PAUSED になってないとダメなんだよなぁ。
SequenceStep.currentStep.state は PlayStates.PAUSED あるいはタイミングによっては PlayStates.STOPPED なので resume 実行条件にあってそう、これを使ってみるかな。
ソースをを変更しちゃうとアップデートの時に大変なんだよなぁ。
なんとか対処できるとイイナ。
この投稿の続きを読む »
5月 09 2009
pause, resume が働かないことがある
前回投稿、pause, resume が期待通りに動かないことがあるようだの件。
正確には、pause 後に resume メソッドを実行してもアニメーション・シーケンスはまだ残っているのにアニメーションを再開しない。
2点、pause 後の resume が期待通りに動かないことが分かった。
1.delay 中に pause した時
2.最後のシーケンスを実行時に pause した時
どちらも HydroSequence.state が PAUSE にならず PLAYING になっているためだと思われる。
GoASAP のステータス管理にバグがあるようだ。
branches だしなぁ〜。
delay 時での pause ができない、は未解決のままだった。
どう対処するかな・・・(続く)
そうそう、HydroSequence はアップデートしたのにコード内のバージョンもリビジョンも変更されてないんだよね。
ややこしい。
10月 29 2008
GoASAP,HydroTween,HydroSequenceそれぞれのモーションでstop,pause,resumeを試した。
GoASAPは複数インスタンスを動かすためにorg.goasap.utils.PlayableGroupクラスを使用した。
モーション自体はHydroTweenで設定した。

この投稿の続きを読む »
10月 27 2008
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に処理が移行しているのにモーションの処理状態しか判定していないために問題が発生しているのではないかと思う。
この投稿の続きを読む »
9月 21 2008
GoASAPは続けざまにココ3日アップデートが続いている。
現在のバージョン:0.5.1e
LinearGo.updateはFixされ他にも細かなFixがされている。
HydroTween,HydroSequenceもアップデート。
現在のバージョン:0.5.1e rev43 / Go 0.5.1e
color(色)のtweenがColorMatrixFilterからColorTransformへ変更された。
関数の多くがprivateからprotectedへ変更され継承しやすくなっているようだ。
HydroTweenのrepeaterは変更されていない?他の変更箇所で対応しているのか検証が必要。
ライブラリがsvnで提供されていることが多くなり最初は恐る恐るコマンドを打っていたけど、最近はかなりなれてきた。なんのことか分からなかった仕組みもようやく見え始めてきた。
うわさではアプリもあるらしいけど当分コマンドを打つことにする。
update:ちょっと試してみた。
GoASAP, LinearGo.updateはFixされcycle時のバグはFixされている。
GoASAP, LinearGoのupdate関数をFixするのコードをGoListに送っておいたんだけど、採用されていた。ちょっとうれしい。
他にもBack.easeOutを使ったときの挙動もFixされている。
計算結果が、Flashが扱える桁を超えることがあるようで、それを修正している。
HydroTweenで複数ターゲットにrepeater指定時にLinerGoRepeaterインスタンスを使った時の挙動はFixされていない。
repeater指定はLinerGoRepeaterインスタンスでなければならないHydroSequenceもとうぜんrepeater設定時には挙動がおかしい。
repeater as LinearGoRepeater
を
new LinearGoRepeater(repeater.cycles, repeater.reverseOnCycle, repeater.easingOnCycle)
に変更する、はまだやっといた方が良いみたい。
color(色)のtweenはColorTransformへ変更され、手作業でつけた色と変わらないようになった。
9月 20 2008
GoASAPがマイナーアップデートした。
org.goasap.managers.RepeaterのBug Fix。
LinearGo.updateはまだ修正されていない。
9月 09 2008
LinearGo, HydroTween, HydroSequenceのクラス図を書いてみた。
PlayableBaseからスーパークラスのEventDispatcherを継承する親子関係。
めんどうでも書いてみると分かりやすいものだと教訓。
背景がグレーなのはhidrotikのクラス、白はGoASAPのクラス、オレンジなのはFlashビルトインクラス。

LinearGo,SequenceCA,HydroTween,HydroSequenceのクラス図
9月 08 2008
GoASAPのコアなクラスLinearGoを使ってtweenしてみる。
GoEvent.UPDATEをリスナーしてハンドラを作る。
ハンドラではGoEventのtarget.positionプロパティを使ってプロパティを動かす。
target.positionは0から1の間のNumber、移動係数(?)のようなもの。
LinearGoのスーパーGoItem. correctValueを使ってtarget.position値を使った計算結果をuseRounding=trueにあうように変換する。
exdendsしたサブクラスでは必ずこの関数を使いナ、だとさ。
useRelativeをtrueにしたときとの違いがまだ良く分からない。
HydroTweenが継承しているクラス、LinearGo, GoASAPを使ってHydroTweenを理解してみる作戦。
この投稿の続きを読む »
9月 07 2008
HydroTween, HydroSequenceでLinearGoRepeaterを使った時のcycle後の最初の値がおかしいのを修正した。
GoASAPのユーザー側コアクラスはLinearGo。
このクラスをextendsして自分なりのクラスを作ってね、というのがGoASAPの考え方のようで、だからgoplaygroundが存在しHydroTweenやGo3Dが生まれたんだナ。
LinearGoのupdateがモーションデータを計算している関数、開始や折返時の条件判定がcycleの時を考慮していないので修正した。
この投稿の続きを読む »
9月 06 2008
org.goasap.managers.LinearGoRepeaterはorg.goasap.managers.Repeaterを継承した、tween繰返しを管理してくれるクラス。
AS2のmx.transitions.Tween.yoyo, startができる、繰返し回数を管理してくれるのが便利。
AS3でもfl.transitions.Tweenとして生き残っているけど複数のTweenを同時に実行した時などで不具合が出る確率が高いので、AS3では使っていない。
AS2の時にモーションは、mx.transitions.Tweenは便利だけど構造が複雑でパフォーマンスが悪いので、mx.effects.Tweenを継承したクラスを自作して利用していた。
mx.effects.Tweenも移植されていたら良かったのにと思ってたら、Flexライブラリには入っていた。
new LinearGoRepeater(cycles: uint=1, reverseOnCycle:Boolean=true, easingOnCycle: Function=null, extraEasingParams: Array=null)
/**
* 繰返し回数、
* 無限の指定は Repeater.INFINITE, 0
*/
cycles
/**
* true:行って戻る mx.transitions.Tween.yoyoと同じ
* false:初めからやり直し mx.transitions.Tween.startと同じ
*/
reverseOnCycle:Boolean
/**
* cycle時のeasing関数、指定しないと同じ関数を使う
*/
easingOnCycle