Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как использовать один обработчик для разных объектов? (http://www.flasher.ru/forum/showthread.php?t=148564)

artarx 06.01.2011 00:45

Цитата:

ни чего не происходит((
цитата к
Цитата:

Код AS3:

var cells:Dictionary = new Dictionary();
 
function Step(e:Event)
{
        if (Player==1 && cells[e.target] != null && cells[e.target] == 0)
        {
            MovieClip(e.target).gotoAndStop(2);
            Player=2;
            cells[e.target]=1;
            stage.addEventListener(Event.ENTER_FRAME,proverka);
        }
 
        if (Player==2 && cells[e.target] != null && cells[e.target] == 0)
        {
            MovieClip(e.target).gotoAndStop(3);
            Player=1;
            cells[e.target]=2;
            stage.addEventListener(Event.ENTER_FRAME,proverka);
        }
}


на счет этого
Код AS3:

Cells[int(String(e.target.name).substr(5))] = ....

я понял что она делает и я опечатался у меня Cell1)))
А куда ее вставлять я не понял

Добавлено через 2 минуты
У меня Cell1

Цитата:

Cells[int(String(e.target.name).substr(4))] = ....
куда это вставлять?

andrew911 06.01.2011 00:49

Понятно.

Вам надо, чтобы при нажатии на Cells1 заполнялось Cells[1]..
Вставляйте там, где ловите нажатие.
Так вы определяете индекс Cells - int(String(e.target.name).substr(4))

artarx 06.01.2011 01:20

Спасибо!! Заработало!

Gaen 06.01.2011 10:40

Цитата:

Cells[int(String(e.target.name).substr(4))]...
Никогда так не делайте.

Почему? Попробуйте разобраться, что делает следующая конструкция, построенная по такой же технологии:

Код AS1/AS2:

this._parent._parent.registerTip(this._parent._parent['area'+this._parent.txtTarget._name.charAt(3)], this.txt.text);


passertm 06.01.2011 13:23

Народ я чегото не совсем вас понимаю. Говоря "Слушатель с параметром" не обязательно идет речь о каком то необычным параметре. e.target тоже параметр. И в это теме первая же ссылка указывает как можно использовать e.target для определения на что именно нажато.
А гдето в теме было написано что можно в e.target добавить своство чтобы его можно было использовать при обработке. Вообщем ИМХО все что нужно товаришу он там нашел бы:)

Добавлено через 5 минут
Вот вместо этого я бы советовал как раз добавить новое поле.
Код AS3:

int(String(e.target.name).substr(4))




а если в массиве те самые елементы на которые нажимают то лучше сделать
Код AS3:

var n:int=array.indexOf(e.target)


andrew911 06.01.2011 16:27

Цитата:

Сообщение от GAIKER (Сообщение 962393)
Никогда так не делайте.

Почему? Попробуйте разобраться, что делает следующая конструкция, построенная по такой же технологии:

Код AS1/AS2:

this._parent._parent.registerTip(this._parent._parent['area'+this._parent.txtTarget._name.charAt(3)], this.txt.text);


Вынесите это в функцию с понятным именем. И тут нету нагромождения парентов, которые все совсем запутывают.


Цитата:

Сообщение от passertm (Сообщение 962414)
Народ я чегото не совсем вас понимаю. Говоря "Слушатель с параметром" не обязательно идет речь о каком то необычным параметре. e.target тоже параметр.

e.target это стандартное свойство. Под слушателем с параметром же имеется в виду передавать новые, нестандартные параметры.


По делу: согласен int(String(e.target.name).substr(4)) это не совсем хорошо, тут проблема в проектировании приложения - если подумать можно все сделать прозрачнее и однозначнее, без кучи Cell1 ... Celln.

Но для новичка, если он понимает, что делает та функция, подойдет. Потом он столкнется с неудобствами, связанными с такой архитектурой, сделает выводы и сделает лучше.


PS Например в коде создавать и размещать клетки, заносить их в массив, потом работать с ним.


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

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