Форум 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=123283)

Resonan 30.03.2009 21:32

event.target.name

BlooDHounD 31.03.2009 00:48

@Karandash8
Код AS3:

var dic:Dictionary = new Dictionayry();
...
var c:Cursor = dic[ button ];

не?

Karandash8 31.03.2009 09:34

Цитата:

Сообщение от Resonan (Сообщение 809595)
event.target.name

у меня была мысль использовать это, но там значения получаются такого вида: instance268. Я совершенно не понял чтоэто за число и от чего оно зависит

Добавлено через 1 час 18 минут
Цитата:

Сообщение от BlooDHounD (Сообщение 809623)
@Karandash8
Код AS3:

var dic:Dictionary = new Dictionayry();
...
var c:Cursor = dic[ button ];

не?

возможно я не совсем понял назначение тут класса Dictionary, но вот какое у меня дерево вложенности классов:

DocClass{
Tools{
ButtonWateringPot
ButtonLoosenTool
ButtonBagWithBugs
ButtonSunShining
}
WateringPot
LoosenTool
BagWithBugs
SunShining
}

здесь соответственно ButtonWateringPot, ButtonLoosenTool, ButtonBagWithBugs, ButtonSunShining - это кнопки;
WateringPot, LoosenTool, BagWithBugs, SunShining - это курсоры.
пользовательское событие начинается в каждой из кнопок, а отлавливается в классе Tools и после этого назначается нужный пользовательский курсор.

На данный момент я реализую это так: в классе Tools создаю два массива, один содержит обьекты курсоров, а второй текстовые имена классов кнопок. Причем индексы для пары кнопка-курсор совпадают. После этого при отлове события, я в цикле сравниваю event.target с элементами массива имен, при совпадении, назначаю пользовательский курсор из массива курсоров с текущим индексом. Получилось относительно коротко, но лучший ли это вариант??

Bgg 16.04.2009 13:11

Таже самая фигня
Код AS3:

//два мувиКлипа
b1.addEventListener(MouseEvent.CLICK, switchRoom);
b2.addEventListener(MouseEvent.CLICK, switchRoom);
//метод
private function switchRoom(event:MouseEvent):void
{
        switch(event.target)
        {
                case b1:roomN = 0; break;
                case b2:roomN = 1; break;
        }
}

Наивно почемуто полагал что event.target будет являтся b1 при нажатии на первую кнопку и b2 соотвественно на вторую. Как можно определить где b1, а где b2?

Упс, спасибо уже ответили пока писал своё сообщение :)

upd Не, ничего не помогло. Если писать в кадрах, то event.target.name верно определяет b1 и b2, а если внутри класса то поеределяет как instance25 :umnik2:

litebox 16.04.2009 14:19

ramshteks Вам вполне верно написал: если вы расширяете MovieClip'ы своими классами, заведите в классах поле
Код AS3:

 var cursorIndex:int;

и будете туда записывать индекс курсора, который должен будет отобразится при нажатии на этот клип, обработчик будет, например, таким:
Код AS3:

private function switchRoom(event:MouseEvent):void
{
        mcCursor.gotoAndStop((event.target as MyClass).cursorIndex);
}

или же, если каждый курсор - это отдельный клип, можете хранить в классе не идентификатор, а указатель на клип нужного курсора


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

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