HydroTween, HydroSequenceで複数インスタンス(ターゲット)を繰返しtweenする時の挙動がおかしいのを修正した。
LinearGoRepeaterインスタンスを設定した場合とObjectの場合とで動きが変わっていた原因を探ってみる。
Objectの場合はターゲットの数分だけLinearGoRepeaterインスタンスが作られるが、LinearGoRepeaterインスタンスの場合は1回しかLinearGoRepeaterインスタンスが作られていない。
どうもココが怪しいのでは、と目星をつける。
複数インスタンス(ターゲット)をtweenするときに使われるorg.goasap.utils.PlayableGroupでの動作確認をしつつHydroTweenを修正してみる。
VERSION: HydroTween 0.5.1 rev42 - Go Version: GoASAP 0.5.1c (c) Moses Gunesch, MIT Licensed.
org.goasap.items.LinearGo
function HydroTween
line 422
old:super(delay, duration, easing, extraEasingParams,
(repeater == null) ? null : ((repeater is LinearGoRepeater) ? repeater as LinearGoRepeater : new LinearGoRepeater(repeater.cycles, repeater.reverse, repeater.easing)),
useRelative, useRounding, useFrames, pulseInterval);
new:super(delay, duration, easing, extraEasingParams,
(repeater == null) ? null : ((repeater is LinearGoRepeater) ? new LinearGoRepeater(repeater.cycles, repeater.reverseOnCycle, repeater.easingOnCycle) : new LinearGoRepeater(repeater.cycles, repeater.reverse, repeater.easing)),
useRelative, useRounding, useFrames, pulseInterval);
LinearGoRepeaterを必ずターゲットインスタンスの数分作成するようにしてみた。
*非公式情報です
[swfobj src=”http://www.inazumatv.com/contents/wp-content/uploads/2008/09/hydro-repeater-0h.swf” width=”600″ height=”300″ id=”repeater-Bug-fix” name=”repeater-Bug-fix” allowfullscreen=”false” required_player_version=”9.0.124″]
Script1
HydroTween.go( [target0,target1,target2,target3,target4,target5,target6,target7,target8,target9], {y:230,rotation:360}, 1.2,0,null,null,null,null,null,null, {cycles:2,reverse:true} ); |
Script2
HydroTween.go( [target0,target1,target2,target3,target4,target5,target6,target7,target8,target9], {y:230,rotation:360}, 1.2,0,null,null,null,null,null,null, new LinearGoRepeater(2,true) ); |
Script3
var goItem : HydroSequence = new HydroSequence( [{ target:[target0,target1,target2,target3,target4,target5,target6,target7,target8,target9], y:230,rotation:360,duration:1.2,repeater:new LinearGoRepeater(2,true) }] ); goItem.start(); |
Script4
var group:PlayableGroup = new PlayableGroup(); group.addChild(new HydroTween(target0,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target1,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target2,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target3,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target4,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target5,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target6,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target7,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target8,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.addChild(new HydroTween(target9,{y:230,rotation:360},1.2,0,null, null,null,null,null,null,new LinearGoRepeater(2,true))); group.start(); |
これで、LinearGo.update関数の修正とあわせてrepeaterを使用した時の動きがFixできる。
メデタシ、メデタシになるといいなァ。
ピンバック: イナヅマtvログ » HydroSequence アップデート, GoASAP r60 と動作チェック(1)