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

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

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

Регистрация: Feb 2006
Сообщений: 33
По умолчанию обратный порядок

Ситуация: на сцене друг за другом вертикально выстраиваются объекты при помощи цикла, все очень просто: y-координата каждого следующего объекта this["q"+i]._y получается путем сложения y-координаты предыдущего объекта this["q"+(i-1)]._y и высоты предыдущего объекта this["q"+(i-1)]._height ...

Код:
this["q"+i]._y=this["q"+(i-1)]._y+this["q"+(i-1)]._height
... и получается что-то типа:
[ q0 ]
[ q1 ]
[ q2 ]
[ ... ]

Вопрос: подскажите, пожалуйста, как сделать такой же обратный порядок построения:
[ ... ]
[ q2 ]
[ q1 ]
[ q0 ]

По идее, y-координата предыдущего должна рассчитываться как разница y-координаты следующего и высоты предыдущего...

Код:
this["q"+(i-1)]._y=this["q"+i]._y-this["q"+(i-1)]._height
...но это не срабатывает. Мб я туплю, подскажите, пожалуйста, где не так?

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

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Покажите полностью код, вместе с циклом, а лучше исходник.

Старый 07.10.2007, 18:30
Keenan вне форума Посмотреть профиль Отправить личное сообщение для Keenan Найти все сообщения от Keenan
  № 3  
Ответить с цитированием
Keenan

Регистрация: Feb 2006
Сообщений: 33
исходник слишком громоздкий, вот код этого цикла

Код:
for(i=0;i<docs.firstChild.childNodes.length;i++){
attachMovie("mc_attach","q"+i,i)
this["q"+i]._x=0
//this["q"+(i-1)]._y=this["q"+i]._y-this["q"+(i-1)]._height //обратный порядок, работает неверно
this["q"+i]._y=this["q"+(i-1)]._y+this["q"+(i-1)]._height //прямой порядок
}
изменение условий цикла на обратные мне не подходит.

Старый 07.10.2007, 18:31
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Вот скажите мне, зачем вы сотню раз копируете «this["q"+(i-1)]»?
Читается проще? Быстрее работает?
Зачем вы ломаете глаза себе и заставляете компилятор сотню раз считать (i-1), конвертировать в строку и мучаться в поисках объекта qX?

Старый 07.10.2007, 18:38
Keenan вне форума Посмотреть профиль Отправить личное сообщение для Keenan Найти все сообщения от Keenan
  № 5  
Ответить с цитированием
Keenan

Регистрация: Feb 2006
Сообщений: 33
ну так как же мне поступить?

моя ошибка здесь?
Код:
attachMovie("mc_attach","q"+i,i)

Старый 07.10.2007, 18:44
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Не тестировал.
Код:
// сверху вниз
var y0 = 0;
for (var i = 0; i<docs.firstChild.childNodes.length; i++) {
	var my_mc = attachMovie("mc_attach", "q"+i, i);
	my_mc._y = y0;
	y0 += my_mc._height;
}
// снизу вверх
var y0 = Stage.height;
for (var i = 0; i<docs.firstChild.childNodes.length; i++) {
	var my_mc = attachMovie("mc_attach", "q"+i, i);
	my_mc._y = y0-my_mc._height;
	y0 -= my_mc._height;
}

Старый 07.10.2007, 19:05
Keenan вне форума Посмотреть профиль Отправить личное сообщение для Keenan Найти все сообщения от Keenan
  № 7  
Ответить с цитированием
Keenan

Регистрация: Feb 2006
Сообщений: 33
благодарю. попробовал, не получилось, к сожалению. а обязательно вводить переменную y0 и my_mc? я поменял в Вашем коде my_mc на свою конструкцию this["q"+i] и работать стало, но неверно все же, все мувики приклеились к y0, а порядок не поменялся.

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
Код:
var y0 = 0;
for (var i = docs.firstChild.childNodes.length-1; i>=0; i--) {
	var my_mc = attachMovie("mc_attach", "q"+i, i);
	my_mc._y = y0;
	y0 += my_mc._height;
}
поздно прочёл о неизменном условии цикла, сории
Код:
var y0 = 0;
for (var i = 0; i<docs.firstChild.childNodes.length; i++) {
	var j = docs.firstChild.childNodes.length - (i+1);
	var my_mc = attachMovie("mc_attach", "q"+j, j);
	my_mc._y = y0;
	y0 += my_mc._height;
}


Последний раз редактировалось Mnilionic; 07.10.2007 в 19:17.
Старый 07.10.2007, 19:17
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 9  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Все должно работать. Потестируйте в кадре.
Код:
// сверху вниз
var y0 = 0;
for (var i = 0; i<5; i++) {
	var my_mc = createEmptyMovieClip("my_mc"+i, i);
	var my_txt = my_mc.createTextField("my_txt", my_mc.getNextHighestDepth(), 0, 0, 100, 30);
	my_txt.text = i+"  "+my_mc;
	my_mc._y = y0;
	y0 += my_mc._height;
}
Код:
// снизу вверх
var y0 = Stage.height;
for (var i = 0; i<5; i++) {
	var my_mc = createEmptyMovieClip("my_mc"+i, i);
	var my_txt = my_mc.createTextField("my_txt", my_mc.getNextHighestDepth(), 0, 0, 100, 30);
	my_txt.text = i+"  "+my_mc;
	my_mc._y = y0-my_mc._height;
	y0 -= my_mc._height;
}
Насчет "а обязательно вводить переменную y0 и my_mc", читайте четвертый пост.


Последний раз редактировалось udaaff; 07.10.2007 в 19:19.
Старый 07.10.2007, 19:45
Keenan вне форума Посмотреть профиль Отправить личное сообщение для Keenan Найти все сообщения от Keenan
  № 10  
Ответить с цитированием
Keenan

Регистрация: Feb 2006
Сообщений: 33
Mnilionic, var j = docs.firstChild.childNodes.length - (i+1); - то, что нужно. Спасибо всем.

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

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

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


 


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


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