0

graphicsGreenSock を使用して AS3のオブジェクトのアルファをトゥイーンしようとしていますが、関数が機能していません。2 秒でアルファ 0 から 0.7 にトゥイーンしようとしています。fromTo();メソッドも機能しません。そうしたくありませんが、代わりにインクリメンタル for ループを使用してこれを行う必要がありますか?—これでは、トゥイーンの時間を制御できないためです。

public function overlayBox():void {

    var overlaySquare:Sprite = new Sprite();

    overlaySquare.graphics.beginFill(0x00000);
    overlaySquare.graphics.drawRect(0, 0, displayRes, displayRes);
    overlaySquare.graphics.endFill();
    overlaySquare.x = xScreenPos;
    overlaySquare.y = yScreenPos;
    TweenMax.from(overlaySquare, 2, {autoAlpha:0});
    TweenMax.to(overlaySquare, 2, {autoAlpha:0.7});

    addChild(overlaySquare);
    trace("overlaySquare index: " + getChildIndex(overlaySquare));
}



編集: 上記の TweenMax 関数を次のように置き換えることで、アルファ 0 から 0.7 へのフェードを修正しました。

overlaySquare.alpha = 0;
TweenMax.to(overlaySquare, 5, {alpha:0.7});

ただし、アルファ トゥイーンをプログラムの残りの部分と一緒に実行すると、問題が発生します。トゥイーンは「点滅」し、すぐに 0.7 になります (0 から 0.7 に「ジャンプ」しているように見えます)。問題は、後で呼び出される関数に切り分けられていますoverlayBox();。プログラムの概要: ローダーを使用してイメージがロードされます。ローダーの中に、 がありmyTimer.start();ます。これは、イメージがロードされると、残りのプログラムを実行するために使用されます。これoverlayBox();は、次に続く最初のメソッドであり、正常に実行されます。次のメソッドはtextAnimation();、それを壊すものであり、その理由はわかりません:

public function textAnimation():void {

        //set text format
        textFormat.font = "Helvetica Neue Light";
        textFormat.size = 28;
        textFormat.bold = false;
        textFormat.color = 0xFFFFFF;
        //textFormat.letterSpacing = 5;

        //set text size
        var size18bold:TextFormat = new TextFormat();
        size18bold.size = 36;
        size18bold.bold = true;

        // pass text format
        textOne.defaultTextFormat = textFormat;
        textTwo.defaultTextFormat = textFormat;

        var xScreenPosStart:Number = xScreenPos + 440;
        var xScreenPosEnd:Number = xScreenPos - 300;

        textOne.text = "Blah blah blah";
        textOne.autoSize = TextFieldAutoSize.LEFT;
        textOne.x = xScreenPosStart;
        textOne.y = yScreenPos + 240;
        TweenMax.to(textOne, 14, {x:xScreenPosEnd, ease:SlowMo.ease.config(1, 0), repeat:-1});

        textTwo.text = "Blah blah blah";
        textTwo.autoSize = TextFieldAutoSize.LEFT;
        textTwo.x = xScreenPosStart;
        textTwo.y = yScreenPos + 140;
        TweenMax.to(textTwo, 12, {x:xScreenPosEnd, ease:SlowMo.ease.config(1, 0), repeat:-1, delay:4});

        //add to stage
        addChild(textOne);
        trace("textOne index: " + getChildIndex(textOne));
        addChild(textTwo);
        trace("textTwo index: " + getChildIndex(textTwo));

        textOne.setTextFormat(size18bold);

    }
4

2 に答える 2

1

TweenMax.from を使用する代わりに、アルファを手動で設定します。

overlaySquare.alpha = 0;
TweenMax.to( overlaySquare, 2, { alpha : .7 } );
于 2013-02-04T19:22:08.820 に答える
0

alpha の初期値を指定し、tweenMax.To のみを使用します

自動アルファ プラグインを有効にしましたか? そうでない場合は、

import com.greensock.TweenLite; 
import com.greensock.plugins.TweenPlugin; 
import com.greensock.plugins.AutoAlphaPlugin; 

//activation is permanent in the SWF, so this line only needs to be run once.
TweenPlugin.activate([AutoAlphaPlugin]); 

自動アルファが必要ない場合は、アルファプロパティを使用してください

私はこれを試しました:

private function _Show() : void {
    var overlaySquare:Sprite = new Sprite();
    overlaySquare.graphics.beginFill(0x00000);
    overlaySquare.graphics.drawRect(0, 0, 200, 200);
    overlaySquare.graphics.endFill();
    overlaySquare.x = 100;
    overlaySquare.y = 100;
    TweenMax.to(overlaySquare, 2, {alpha:0.7});

    addChild(overlaySquare);
    trace("overlaySquare index: " + getChildIndex(overlaySquare));
}

これは機能します。

于 2013-02-04T18:20:27.167 に答える