![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Oct 2001
Сообщений: 146
|
У меня такая задача: игровое поле состоит из однотипных ячеек. При щелчке на одной из них необходимо проанализировать состояние окружающих ячеек (т. е. ячеек, координаты которых определенным образом зависят от ячейки, на которой был щелчок. Каким образом это можно сделать? В Delphi например есть ByName, а есть ли в ActionScript что-нибудь подобное?
|
|
|||||
|
Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
|
Если у тебя таблица кнопок (2D), то удобно иметь у каждой кнопки (в смысле мува) имя вида:
knopka_x_y Примеры: knopka_0_0 - кнопка из верхнего левого угла knopka_10_10 - кнопка из нижнего правого угла (если таблица - 10*10) knopka_5_5 - кнопка по центру (если таблица - 10*10) Таким образом, при нажатии на хит-арею (кнопарь, лежащий внутри именованного мува-кнопки), хит ареа вызывает функцию кнопки-клипа, в котором сама лежит - clicked(this.x, this.y), передавая в качестве параметра переменные, переданные в цикле при attachMovie(...), и содержащие номера этого клипа - по Х и по У. Вот функция: function clicked(x, y){ //смотрим на соседку слева: if(x>0){ cur_x=x-1; cur_y=y; left=_root.pole["knopka_"+cur_x+"_"+cur_y]; // _root.pole - клип, в который ты это дело аттачил. //Теперь ты можешь обращаться к left как к _root.pole.knopka_x_y Только тебе уже известны эти х, у } //смотрим на соседку сверху: if(x>0){ cur_x=x; cur_y=y-1; top=_root.pole["knopka_"+cur_x+"_"+cur_y]; // _root.pole - клип, в который ты это дело аттачил. //Теперь ты можешь обращаться к top как к _root.pole.knopka_x_y Только тебе уже известны эти х, у } // и т.д. и т.п. } Если используешь МХ, то можно и без клипов - там кнопки можно именовать. |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
2[subway]design
Ты всегда так страшно делаешь? Создаем двумерный массив Array2D = new Array(); for (var i = 0; i < _something; i++) Array2D[i] = new Array(); Потом заполняем его ссылками на клипы/кнопки. Думаю, что адресация Array2D[X][Y] работает быстрее чем this["instancename_" + X + "_" + Y], а кроме того на вид она проще и понятнее.
__________________
...убивать людей не удовольствия ради, но для еды. |
|
|||||
|
Регистрация: Oct 2001
Адрес: в Петербурге
Сообщений: 2,430
|
Нет, не всегда :) Первое, что в голову пришло.
|
![]() |
Часовой пояс GMT +4, время: 05:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|