トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     tween クラスで、二つ以上のプロパティを操作したい場合
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Tokyodays
Åê¹ÆNo.32453
投稿日時: 2007-3-12 18:48
新米
居住地:
投稿: 11
使用環境:
OS:Windows XP SP3
IDE:Flash Professional CS3
tween クラスで、二つ以上のプロパティを操作したい場合
どうもこんばんは。

tween クラスで二つ以上のプロパティを操作したい場合について質問です。
例えば以下のようなコードがあるとします。

import mx.transitions.Tween;
import mx.transitions.easing.*;

var myTween:Tween = new Tween(_mc, "_y", Elastic.easeOut, 0, 100, 5, true);
var myTween:Tween = new Tween(_mc, "_x", Elastic.easeOut, 0, 100, 5, true);

この場合、両方の tween が動きます。
しかし、一つ目の tween は二つ目の tween が var で宣言された瞬間にメモリタスクから消えてしまい、動かないような錯覚を受けてしまいます。

例えば、
var num:Number = 1;
var num:Number = 2;
というコードでは、1行目のコードを2行目が上書きするので、num は 2 となります。

なので最初のコードには凄く違和感を感じます。

mc_tween では二つ以上のプロパティを操作したい場合は配列でプロパティを与えるので、納得がいくのです。

ものすごく漠然とした質問となってしまいますが、どこか合点がいくような資料等あれば紹介して頂ければと思います。

また、mc_tween のように複数のプロパティを配列で渡せるような tween クラスの拡張スクリプトがどこかに存在しているのであればご教授して頂ければと思います。

宜しくお願いいたします。
野中文雄
Åê¹ÆNo.32454
投稿日時: 2007-3-12 20:50
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: tween クラスで、二つ以上のプロパティを操作したい場合
まず、同じ変数を重ねてvar宣言することは、避けた方がよいでしょう。ActionScript 3.0では、コンパイルエラーになります。

以下のスクリプトは、問題なくふたつのMovieClipインスタンスを生成し、片方が消滅することはありません。インスタンスを変数に保持することは、MovieClipの存在を左右しないからです。
var _mc:MovieClip;
_mc = this.createEmptyMovieClip("my0_mc", 0);
_mc = this.createEmptyMovieClip("my1_mc", 1);

Tweenも、インスタンスを変数に取得しなくても動作します。
import mx.transitions.Tween;
import mx.transitions.easing.*;

new Tween(_mc, "_y", Elastic.easeOut, 0, 100, 5, true);
new Tween(_mc, "_x", Elastic.easeOut, 0, 100, 5, true);

これは、以下の2行のステートメントが動作するのと同じことです。
my0_mc.play();
my1_mc.play();

もちろん、変数を同名にすれば、値は上書きされます。したがって、以下に追加したTween.onMotionFinishedイベントハンドラメソッドは、水平方向にのみ動作します。
引用:
Tokyodaysさんは書きました:
var myTween:Tween;
// var myTween:Tween = new Tween(_mc, "_y", Elastic.easeOut, 0, 100, 5, true);
myTween = new Tween(_mc, "_y", Elastic.easeOut, 0, 100, 5, true);
// var myTween:Tween = new Tween(_mc, "_x", Elastic.easeOut, 0, 100, 5, true);
myTween = new Tween(_mc, "_x", Elastic.easeOut, 0, 100, 5, true);
myTween.onMotionFinished = function() {
	this.yoyo();
	delete this.onMotionFinished;
};

この場合、両方の tween が動きます。
しかし、一つ目の tween は二つ目の tween が var で宣言された瞬間にメモリタスクから消えてしまい、動かないような錯覚を受けてしまいます。

mc_tweenというのが、どういうものなのかわかりかねます。
引用:
mc_tween では二つ以上のプロパティを操作したい場合は配列でプロパティを与えるので、納得がいくのです。

配列で渡されたプロパティすべてについてTweenインスタンスを生成するような、関数をひとつ定義すればよいことのように思われます。
引用:
また、mc_tween のように複数のプロパティを配列で渡せるような tween クラスの拡張スクリプトがどこかに存在しているのであればご教授して頂ければと思います。


----------------
 

youich
Åê¹ÆNo.32459
投稿日時: 2007-3-13 11:56
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: tween クラスで、二つ以上のプロパティを操作したい場合
引用:

tween クラスで二つ以上のプロパティを操作したい場合について質問です。
例えば以下のようなコードがあるとします。

import mx.transitions.Tween;
import mx.transitions.easing.*;

var myTween:Tween = new Tween(_mc, "_y", Elastic.easeOut, 0, 100, 5, true);
var myTween:Tween = new Tween(_mc, "_x", Elastic.easeOut, 0, 100, 5, true);

この場合、両方の tween が動きます。
しかし、一つ目の tween は二つ目の tween が var で宣言された瞬間にメモリタスクから消えてしまい、動かないような錯覚を受けてしまいます。

瞬間じゃない(^^;と思いますが普通は消えますよね。
Tweenクラスの場合問題ないのはコンストラクタでリスナーに登録される、
またはセットインターバルのターゲットに指定されるからだと思います。

引用:

また、mc_tween のように複数のプロパティを配列で渡せるような tween クラスの拡張スクリプトがどこかに存在しているのであればご教授して頂ければと思います。

宜しくお願いいたします。

Tweenの拡張じゃないですけどFusekitがそうですね。
http://www.project-nya.jp/modules/weblog/details.php?blog_id=583


----------------
- yo

Tokyodays
Åê¹ÆNo.46550
投稿日時: 2010-12-14 19:44
新米
居住地:
投稿: 11
使用環境:
OS:Windows XP SP3
IDE:Flash Professional CS3
Re: tween クラスで、二つ以上のプロパティを操作したい場合
なるほど。返信ありがとうございます。勉強になりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops