1

TweenMax を使用して、リンクをロールオーバーしたときにいくつかの矢印が動くようにアニメーション化し、ロールアウトしたときにアニメーションを元に戻します。しかし、それは機能していません。ロールオーバーでアニメーション化しますが、ロールアウトではアニメーション化しません。

function boxLink(mc_function:MovieClip, mc_target:MovieClip) {
mc_function.onRollOver = function() {
    var myTween:TweenMax = new TweenMax(mc_target,0.5,{_x:"2", _alpha:50, ease:Back.easeOut});
};
mc_function.onRollOut = function() {
    myTween.reverse();
};
}

boxLink(link_a1,arrow_a1);

私は何を間違っていますか?

このコードを記述するより良い方法はありますか?

4

3 に答える 3

2

ルークは絶対に正しいです。「var」キーワードを使用して「LOCAL VARIABLE」を作成しました。そのスコープは、内部で作成された関数のスコープです。その機能が実行されると、使用できなくなります。私が Luke と異なる点は、変数を一番上に作成することです (コンパイラはとにかく変数を一番上に移動します)。開発中の OOP の場合はクラス スコープで作成し、それ以外の場合はアクション フレームの一番上に貼り付けます。関数の外側。そこで値を指定する必要はありません。単に宣言してデータ型を設定するだけです。

var myTween:TweenMax; //Can be access from anywhere within "this" scope.
mc_function.onRollOver = function()
{
    myTween = new TweenMax(mc_target,0.5,{_x:"2", _alpha:50,  ease:Back.easeOut});
};
mc_function.onRollOut = function()
{
    myTween.reverse();
};
于 2009-03-27T22:19:33.413 に答える
2

スコーピング。onRollOut がトリガーされると、myTween 変数は onRollOver で宣言されているため存在せず、onRollOver スコープにのみ存在します。代わりに、mc_function のスコープで myTween 変数を作成して、onRollOver と onRollOut の両方で使用できるようにします。

function boxLink(mc_function:MovieClip, mc_target:MovieClip) {
mc_function.onRollOver = function() {
        this.myTween = new TweenMax(mc_target,0.5,{_x:"2", _alpha:50, ease:Back.easeOut});
};
mc_function.onRollOut = function() {
        this.myTween.reverse();
};
}
于 2009-03-26T21:39:08.263 に答える
1

onRollOut実行しても変数myTweenがまだ存在していることを確認しますか?関数内で定義された変数varは、理論的には、それを定義した関数内にのみ存在する必要があるためです。だから私の推測では、あなたはもう存在しない変数を呼び出していると思います。

trace(myTween);直前に入れてみてくださいmyTween.reverse();。それが印刷される場合undefined、それはあなたの問題でありmyTween.reverse();、反対のトランジションに置き換える必要がありますが、次のように書かれていますvar myTween:TweenMax = new TweenMax(*);

于 2009-03-25T10:34:29.037 に答える