Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.10.2009, 17:27
peresmeshnik вне форума Посмотреть профиль Отправить личное сообщение для peresmeshnik Найти все сообщения от peresmeshnik
  № 1  
Ответить с цитированием
peresmeshnik
 
Аватар для peresmeshnik

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
По умолчанию Движение массива объектов

Приветствую.
У меня есть вот такой код, который позволяет двигать объект "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++;
	}
}
Подскажите пожалуйста, что я делаю неверно?

Старый 26.10.2009, 18:07
desadent вне форума Посмотреть профиль Отправить личное сообщение для desadent Найти все сообщения от desadent
  № 2  
Ответить с цитированием
desadent

Регистрация: Oct 2009
Сообщений: 12
Код AS1/AS2:
var speed = 1;
this.onEnterFrame = function(){
        for(i=1;i<5;i++){
	_root["box" + i]._x = _root["box" + i]._x + speed;
}
}

Старый 26.10.2009, 20:53
peresmeshnik вне форума Посмотреть профиль Отправить личное сообщение для peresmeshnik Найти все сообщения от peresmeshnik
  № 3  
Ответить с цитированием
peresmeshnik
 
Аватар для peresmeshnik

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
Спасибо огромное, так действительно работает, но это не решило моей проблемы, т.к. мне нужно, чтобы объекты двигались по периметру экрана. Для этого я написал вот такой код, чтобы объекты "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 все идет хорошо.

Старый 26.10.2009, 21:10
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 4  
Ответить с цитированием
spooner
 
Аватар для spooner

Регистрация: Mar 2009
Сообщений: 207
Я, честно говоря, не уверен, что врубился, чего вы хотите, но могу сказать, что код
Код 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;
но это чисто предположение

Старый 26.10.2009, 21:24
peresmeshnik вне форума Посмотреть профиль Отправить личное сообщение для peresmeshnik Найти все сообщения от peresmeshnik
  № 5  
Ответить с цитированием
peresmeshnik
 
Аватар для peresmeshnik

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
На самом деле у меня этот код на пару экранов, только потому, чтобы описать движение по периметру, с учетом изменения размеров окна и разворота по углам.
А смысл в том, чтобы эти объекты двигались именно по периметру, т.е. как в прикрепленном архиве, но только множество, раскиданное хаотично именно по периметру.
Вложения
Тип файла: zip engine.zip (1.6 Кб, 53 просмотров)

Старый 26.10.2009, 21:41
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 6  
Ответить с цитированием
spooner
 
Аватар для spooner

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

Старый 26.10.2009, 21:49
peresmeshnik вне форума Посмотреть профиль Отправить личное сообщение для peresmeshnik Найти все сообщения от peresmeshnik
  № 7  
Ответить с цитированием
peresmeshnik
 
Аватар для peresmeshnik

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
Когда вверх ползет - нижней границей окна она подталкивается выше, а в окне их всего-то 4-5 штук нужно. Но без этого никак, т.к. у пользователей окно браузера может и сжиматься и на весь экран растягиваться.
Не хочется для каждого элемента свой код делать - это как-то неоптимально...

Старый 26.10.2009, 21:56
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 8  
Ответить с цитированием
spooner
 
Аватар для spooner

Регистрация: Mar 2009
Сообщений: 207
Вам надо сделать КАК в engine.swf или это то, что у вас получилось?

Старый 26.10.2009, 21:58
peresmeshnik вне форума Посмотреть профиль Отправить личное сообщение для peresmeshnik Найти все сообщения от peresmeshnik
  № 9  
Ответить с цитированием
peresmeshnik
 
Аватар для peresmeshnik

Регистрация: Oct 2003
Адрес: СПб
Сообщений: 200
Отправить сообщение для peresmeshnik с помощью ICQ
engine.swf это то, что у меня получилось. Но работает только для одного объекта. Массив я хотел добавить циклом, но не получилось, вот, ломаю голову, как сделать...

Старый 26.10.2009, 22:23
spooner вне форума Посмотреть профиль Отправить личное сообщение для spooner Найти все сообщения от spooner
  № 10  
Ответить с цитированием
spooner
 
Аватар для spooner

Регистрация: Mar 2009
Сообщений: 207
Если вы пропишите такой код
Код AS1/AS2:
stagelistener.onResize=function(){
   for (i=1; i<=2; i++){
      sh=Stage.height;
      _root["box" + i]._y = sh;
   }
}
Stage.addListener(stagelistener);
то при изменении размера экрана ВСЕ ваши боксы свалятся в низ экрана. Нельзя же так.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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