Flash ActionScript 3.0调整事件文本的大小

时间:2014-03-11 17:47:19

标签: actionscript-3 flash events actionscript resize

我是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);
}
}

谢谢你们!

1 个答案:

答案 0 :(得分:0)

你可以做的是创建一个名为sleep()的函数,它将为你做延迟,当它完成时你可以让它调用另一个函数来移动和缩放你的文本字段,在我的例子中我称之为moveAndScaleText(因为您可能正在使用矢量字体,因此缩放将很好地工作)。这可能看起来像这样:

首先将此导入语句添加到代码顶部(假设这是在时间轴中完成):

import flash.utils.getTimer;

然后使用我们即将创建的frameHandler()函数更新您的sleep()

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 );
}

这基本上是在说......

  • 将whiteText沿x轴移动到300,超过3秒

  • scaleTe和scaleY在whiteText上从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路线,因为这些是程序化动画的最佳选择。祝你好运!