Flash ActionScript 3.0 调整事件文本大小

Posted

技术标签:

【中文标题】Flash ActionScript 3.0 调整事件文本大小【英文标题】:Flash ActionScript 3.0 Resize Event Text 【发布时间】:2014-04-15 11:15:45 【问题描述】:

我是 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】:

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

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

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()
    

sleep 函数将采用时间参数,以秒为单位。完成后会调用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 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 秒

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 路线,因为它们最适合程序化动画。祝你好运!

【讨论】:

您好,感谢您的快速回复。所以,我使用了 Tween 选项。但是,我收到此语法错误“1084-在Regular之前期望rightparen。”。这被称为“new Tween(whiteText, "scaleY", Regular.easeIn, 1, 2, 3, true);"线。我该如何解决这个问题? 这是一个格式错误,它不是来自我发布的代码。在您的代码中的某个地方需要一个右括号,您必须仔细检查您的代码以找到缺少的地方。这也是在时间轴中编码而不是在 actionscript 中使用代码编辑器的缺点。 今天我尝试了 TweenMax。但是我可能在睡眠功能上做错了,因为现在它停止了,其他任何东西都在移动。这是我的代码......(它写在一个新的答案中) 在sleep函数结束时你必须调用moveAndScaleText(),但是在你调用sleep之前移除事件监听器,我会把它添加到我的答案中

以上是关于Flash ActionScript 3.0 调整事件文本大小的主要内容,如果未能解决你的问题,请参考以下文章

动画未在 actionscript 3.0 (flash cc) 中启动

将变量从 HTML 传递到 Flash ActionScript 3.0

如何在 Flash 中使用 Actionscript 3.0 制作动态视频播放器

Flash Actionscript 3.0 影片剪辑过渡(无按钮)

ActionScript 3 Flash调整Swf的大小

使用 javascript 与 actionscript 3.0 交互