(ActionScript) Перемещение объектов в массиве, создающее эффект волны стадиона. - PullRequest
0 голосов
/ 29 января 2010

Я хочу переместить все объекты в массиве, создавая эффект волны стадиона, как мне это сделать? Я хочу переместить объекты в зависимости от их значения 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 Ответ

1 голос
/ 29 января 2010

Вам нужно взять анимированный объект в функции 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");
}
Еще одна вещь, почему вы используете таймер t2 в функции moveUp.
...