Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Движение массива объектов (http://www.flasher.ru/forum/showthread.php?t=131699)

peresmeshnik 26.10.2009 17:27

Движение массива объектов
 
Приветствую.
У меня есть вот такой код, который позволяет двигать объект "box" в заданном направлении:
Код AS1/AS2:

var speed = 1;
this.onEnterFrame = function(){
        box._x = box._x + speed;
}

Проблема заключается в том, что у меня не получается двигать сразу массив объектов "box1", "box2". Для этого я использую этот код:
Код AS1/AS2:

var speed = 1;
var i = 2;
 
this.onEnterFrame=function(){
        while (i <= 2){
                _root["box" + i]._x = _root["box" + i]._x + speed;
                i++;
        }
}

Подскажите пожалуйста, что я делаю неверно?

desadent 26.10.2009 18:07

Код AS1/AS2:

var speed = 1;
this.onEnterFrame = function(){
        for(i=1;i<5;i++){
        _root["box" + i]._x = _root["box" + i]._x + speed;
}
}


peresmeshnik 26.10.2009 20:53

Спасибо огромное, так действительно работает, но это не решило моей проблемы, т.к. мне нужно, чтобы объекты двигались по периметру экрана. Для этого я написал вот такой код, чтобы объекты "box" пристыковывались к нижней части окна:
Код AS1/AS2:

Stage.align="TL"
Stage.scaleMode="noScale"
 
stagelistener = new Object();
var speed = 1;
 
this.onEnterFrame=function(){
 
        for (i=1; i<=2; i++){
                stagelistener.onResize=function(){
                        sh=Stage.height;
                        _root["box" + i]._y = sh;
                }
                Stage.addListener(stagelistener);
                _root["box" + i]._x = _root["box" + i]._x + speed;
        }
}

Код не работает, хотя без цикла for все идет хорошо.

spooner 26.10.2009 21:10

Я, честно говоря, не уверен, что врубился, чего вы хотите, но могу сказать, что код
Код AS1/AS2:

stagelistener.onResize=function(){
        sh=Stage.height;
        _root["box" + i]._y = sh;
}
Stage.addListener(stagelistener);

не надо прописывать в цикле и уж тем более в enterFrame'e, достаточно написать один раз, в начале.
И еще, если у мувика box точка регистрации в левом верхнем углу (так по умолчанию), то ваши мувики будут за экран уходить, поэтому
Код AS1/AS2:

_root["box" + i]._y = sh - _root["box" + i]._height;

но это чисто предположение

peresmeshnik 26.10.2009 21:24

Вложений: 1
На самом деле у меня этот код на пару экранов, только потому, чтобы описать движение по периметру, с учетом изменения размеров окна и разворота по углам.
А смысл в том, чтобы эти объекты двигались именно по периметру, т.е. как в прикрепленном архиве, но только множество, раскиданное хаотично именно по периметру.

spooner 26.10.2009 21:41

хм, все равно не догоняю, попробуйте ваш engine.swf за нижнюю часть окна потаскать вверх/вниз, когда эта штука вверх ползет, и прикиньте что будет, когда их много станет.

peresmeshnik 26.10.2009 21:49

Когда вверх ползет - нижней границей окна она подталкивается выше, а в окне их всего-то 4-5 штук нужно. Но без этого никак, т.к. у пользователей окно браузера может и сжиматься и на весь экран растягиваться.
Не хочется для каждого элемента свой код делать - это как-то неоптимально...

spooner 26.10.2009 21:56

Вам надо сделать КАК в engine.swf или это то, что у вас получилось?

peresmeshnik 26.10.2009 21:58

engine.swf это то, что у меня получилось. Но работает только для одного объекта. Массив я хотел добавить циклом, но не получилось, вот, ломаю голову, как сделать...

spooner 26.10.2009 22:23

Если вы пропишите такой код
Код AS1/AS2:

stagelistener.onResize=function(){
  for (i=1; i<=2; i++){
      sh=Stage.height;
      _root["box" + i]._y = sh;
  }
}
Stage.addListener(stagelistener);

то при изменении размера экрана ВСЕ ваши боксы свалятся в низ экрана. Нельзя же так.


Часовой пояс GMT +4, время: 18:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.