在 ActionScript 中移动数组中的对象以产生体育场波浪效果
Posted
技术标签:
【中文标题】在 ActionScript 中移动数组中的对象以产生体育场波浪效果【英文标题】:Move objects in an array producing a stadium wave effect in ActionScript 【发布时间】:2011-01-10 19:02:15 【问题描述】:我想移动数组中的所有对象以产生体育场波浪效果。
我想根据舞台上的 y 值移动对象。我所有的正方形的大小都是 50x50。我想将它们向上移动,然后将它们向下移动。以下是我的代码:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
var t1:Timer = new Timer(100, 0);
var index:int = 0;
t1.addEventListener(TimerEvent.TIMER, ping);
t1.start();
var array:Array = new Array();
addToArray();
function addToArray():void
for(var i=0; i<10; i++)
array[i] = new Sq();
array[i].x = i*50 + 50;
array[i].y = 100;
addChild(array[i]);
function ping(e:TimerEvent)
if(index < array.length)
moveUp(array[index]);
index ++;
function moveUp(sq:Sq):void
var tweenRight:Tween = new Tween(sq,"y",None.easeOut, sq.y, sq.y - 50, 1, true);
tweenRight.addEventListener(TweenEvent.MOTION_FINISH, moveDown);
function moveDown(e:TweenEvent):void
//what to put here?
//or this is not the right way to do this?
【问题讨论】:
【参考方案1】:您需要在 moveDown 函数中抓取补间对象并应用补间动画(增加 y)。
function moveDown(e:TweenEvent):void
var sq:Sq = Sq(e.target.obj);
var tweenDown:Tween = new Tween(sq,"y",None.easeOut, sq.y, sq.y + 50, 1, true);
if (Sq(e.target.obj) === array[array.length - 1])
trace("this is the last tween down");
tweenDown.addEventListener(TweenEvent.MOTION_FINISH, lastTweenFinish);
function lastTweenFinish(e:TweenEvent):void
trace("DONE");
还有一件事,你为什么在 moveUp 函数中使用 Timer t2。
【讨论】:
我忘记删除了。 Tt 是一次失败的尝试。 我不知道我可以使用e.target.obj,非常感谢! 如何检查数组中最后一个对象是否有动画? 用同样的方法编辑了答案。还有一个真诚的建议,首先尝试查看语言参考。 :) The Language Reference 获得了太多信息,有时很难找到我想要的东西而没有足够的线索......以上是关于在 ActionScript 中移动数组中的对象以产生体育场波浪效果的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Macromedia Flash MX 中通过使用 ActionScript 增加对象的坐标来移动对象?
如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3