![](/img/trans.png)
[英]How to add container or panel in flash and resize them using 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.