簡體   English   中英

Flash ActionScript 3.0調整大小事件文本

[英]Flash ActionScript 3.0 Resize Event Text

我是Flash和ActionScript的新手。 我正在嘗試為文本添加動畫,但是找不到我想做的事情,也不知道該怎么做。

我有一個動作腳本代碼,可在文本字段上創建打字機效果。 產生這種效果之后,我希望文本停頓幾秒鍾,然后將其移動到另一個位置並同時調整其大小。 這可能嗎? 這是我的代碼:

import flash.events.Event;

var myString:String = "LIGA DOS CAMPEÕES";
var myArray:Array = myString.split("");

addEventListener(Event.ENTER_FRAME,frameHandler);
function frameHandler(event:Event):void{
if(myArray.length > 0) {
whiteText.appendText(myArray.shift());
} else {
removeEventListener(Event.ENTER_FRAME,frameHandler);
}
}

多謝你們!

您可以做的是創建一個稱為sleep()的函數,該函數將為您帶來延遲,完成后,您可以讓它調用另一個函數來移動和縮放文本字段,在我的示例中,我將其moveAndScaleText (因為重新使用向量字體,縮放效果會很好)。 可能看起來像這樣:

首先將此import語句添加到代碼頂部(假設這是在時間軸中完成的):

import flash.utils.getTimer;

然后使用即將創建的sleep()函數更新您的frameHandler()

function frameHandler(event:Event):void{
    if(myArray.length > 0) {
        whiteText.appendText(myArray.shift());
    } else {
        removeEventListener(Event.ENTER_FRAME, frameHandler) ;
        sleep( 3 ); //run for a 3 second delay, then call moveAndScaleText()
    }
}

睡眠功能將采用時間參數,以秒為單位。 完成后將調用moveAndScaleText函數

function sleep( secondsDelay:int ):void {
    var currentTime:int;
    var startTime:int = getTimer();
    var delay:int = secondsDelay * 1000; //convert seconds to ms
    while( currentTime - startTime < delay ) {
        currentTime = getTimer();
    }
    moveAndScaleText(); //call our last function scale text
}

現在用於縮放和移動文本字段。 您可以通過幾種不同的方式來執行此操作,如果您使用TweenMax Library :在一行代碼中,您可以移動和縮放:

function moveAndScaleText():void {
    TweenMax.to( whiteText, 2, { x: 300, scaleX:2, scaleY: 2} );
}

這會將其X和Y縮放為2,並將其移動到300的x位置。顯然,這需要下載該庫並將其添加到您的項目中。 因此,您可以執行的另一種方法是使用fl軟件包。 為此,您可以將以下import語句添加到代碼部分的頂部:

import fl.transitions.Tween;
import fl.transitions.easing.*;

然后在moveAndScaleText()執行以下操作:

function moveAndScaleText():void {
    new Tween( whiteText, "x", Regular.easeIn, whiteText.x, 300, 3, true );
    new Tween( whiteText, "scaleX", Regular.easeIn, 1, 2, 3, true );
    new Tween( whiteText, "scaleY", Regular.easeIn, 1, 2, 3, true );
}

基本上是說...

  • 沿x軸將whiteText移至300,持續3秒

  • whiteText上的scaleX和scaleY從1到2,歷時3秒

這將是您以編程方式實現它的最簡單方法。 您可以執行的另一種方法是擁有一個Event.ENTER_FRAME ,並移動TextField並將其縮放一定數量,直到達到所需的值。 我不會寫出來,因為我認為這很明顯,但是我可以對其進行偽編碼。 如果您走了這條路線,則在Event.ENTER_FRAME函數中將具有以下語句:

if ( whiteText.scaleX < 2 ) {
    whiteText.scaleX += 0.1;
    whiteText.scaleY += 0.1;
}
if ( whiteText.x < 300 ) {
    whiteText.x += 1;
}

這些是完成任務的幾種方法。 如果是我,我可能會選擇Tween或TweenMax路線,因為這些路線最適合編程動畫。 祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM