イナヅマTVログ

HydroTween, HydroSequence repeaterでのBugをFixする

| 1件のコメント

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できる。
メデタシ、メデタシになるといいなァ。

1件のコメント

  1. ピンバック: イナヅマtvログ » HydroSequence アップデート, GoASAP r60 と動作チェック(1)

コメントを残す

必須欄は * がついています


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください