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 制作动态视频播放器