Как уже упоминалось в ответе @ DANIEL-Мессер, вы можете использовать Array
для хранения шаров, а во второй части вашего вопроса, при снятии последний мяч и передвигая другие из них, вы можете использовать array.pop()
, чтобы удалить последний элемент массива, а затем вы можете использовать array.map()
, чтобы переместить другие шары:
function release2Ball2(event:MouseEvent): void
{
if(balls.length > 0){
ball = balls.pop(); // remove and get the last element of the array
ball.parent.removeChild(ball); // remove that element from the DisplayObjectContainer
function move_ball(item:Ball, index:int, array:Array):void {
item.y += 17;
}
// move the rest of elements
balls.map(move_ball, this);
}
}
EDIT:
Посмотрите на код работы, я добавил номера, чтобы понять, как шары движутся:
Ваш полный код может быть таким:
var balls:Array = [],
ball:gBall4M;
for (var i:int = 0; i < 5; i++) {
ball = new gBall4M();
ball.x = 331.30;
ball.y = 25 + i * 17;
balls.push(ball);
addChild(ball);
}
btn.addEventListener(MouseEvent.CLICK, release2Ball2);
function release2Ball2(event:MouseEvent):void {
if (balls.length > 0) {
ball = balls.pop();
ball.parent.removeChild(ball);
function move_ball(item:gBall4M, index:int, array:Array):void {
item.y += 17;
}
balls.map(move_ball, this);
}
}
EDIT 2 :
Чтобы сделать такую анимацию, вы можете использовать Timer
, как это:
var balls:Array = [],
ball:gBall4M;
for (var i:int = 0; i < 5; i++) {
ball = new gBall4M();
ball.x = 30;
ball.y = 25 + i * 17;
balls.push(ball);
addChild(ball);
}
btn.addEventListener(MouseEvent.CLICK, release2Ball2);
function release2Ball2(event:MouseEvent):void {
if (balls.length > 0) {
ball = balls.pop();
ball.parent.removeChild(ball);
if(balls.length > 0){
timer.start();
}
}
}
var timer:Timer = new Timer(150);
timer.addEventListener(TimerEvent.TIMER, function(e:TimerEvent){
if(balls.length >= timer.currentCount){
balls[balls.length - timer.currentCount].y += 17;
} else {
timer.reset();
}
})
Который даст вам что-то вроде этого:
Надежда, которая может помочь.
Я не работаю с кодом файла. Это то, что работает с удалением нижних шариков по одному. Все еще нужно кодировать шары, бросая какую-нибудь идею? 'var ball: gBall4M; var i: Number; var ballA: Array = []; buttonA.addEventListener (MouseEvent.CLICK, release2Ball2); для (i = 0; i <5; i ++) { \t ball = new gBall4M(); \t ball.x = 331.30; \t ball.y = 100 + i * 17 \t addChild (ball); \t ballA.push (мяч); } функция release2Ball2 (событие: MouseEvent): пустота { \t, если (ballA.length> 0) { \t \t шар = ballA.pop(); \t \t removeChild (ball); \t \t мяч = нуль \t \t для (I = 0; я
SBA
@SBA Что ваша проблема именно? Вы пробовали мой код? – akmozo
Да, пробовал ваш код. это не сработало. приведенный выше код работает, но не полностью. Я хочу, чтобы после каждого щелчка после того, как нижний шар был удален, оставшиеся шары упадут на один шаг вниз. – SBA