![]() |
Проверка имени переменной из ActionScript.
У меня такая задача: игровое поле состоит из однотипных ячеек. При щелчке на одной из них необходимо проанализировать состояние окружающих ячеек (т. е. ячеек, координаты которых определенным образом зависят от ячейки, на которой был щелчок. Каким образом это можно сделать? В Delphi например есть ByName, а есть ли в ActionScript что-нибудь подобное?
|
Если у тебя таблица кнопок (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 Только тебе уже известны эти х, у } // и т.д. и т.п. } Если используешь МХ, то можно и без клипов - там кнопки можно именовать. |
2[subway]design
Ты всегда так страшно делаешь? Создаем двумерный массив Array2D = new Array(); for (var i = 0; i < _something; i++) Array2D[i] = new Array(); Потом заполняем его ссылками на клипы/кнопки. Думаю, что адресация Array2D[X][Y] работает быстрее чем this["instancename_" + X + "_" + Y], а кроме того на вид она проще и понятнее. |
Нет, не всегда :) Первое, что в голову пришло.
|
| Часовой пояс GMT +4, время: 13:50. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.