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

Digital 19.02.2014 01:21

Двойное обращение к функции
 
Есть некая функция
private function funcname(e:MouseEvent)
Обращаюсь я к ней из одного места по событию мыши, а из другого по нажатию клавиши клавиатуры. Что нужно писать в скобках, что б и то и то работало? Можно там перечисление ивентов делать?

Akopalipsis 19.02.2014 01:32

Код AS3:

private function event_Handler(event:*):void 
{
        trace(event.type);
}

Код AS3:

private function event_Handler(event:Object):void 
{
        trace(event.type);
}

Но я бы выслушал мнения, на сколько это правильно.

Wolsh 19.02.2014 02:43

Код AS3:

private function event_Handler(event:Event):void 
{
        trace(event.type);
}


in4core 19.02.2014 03:08

Wolsh , а я вот поспорю с тобой, что этот вариант правильный самый ( если конечно ты на пост Акро отвечал, а на пост ТС , если на ТС - то вопросов нет ).

Akopalipsis - правильно так, как требует ситуация. Если идет принятие кастомных событий, то возможно лучшим будет event:* . Да бы предусмотреть ситуации e.params и т.п. иначе не скомпилиться. Вариант с объектом в данном случае неверен, так как большинство понимают под Object {} и ты скорее всего сам потом запутаешься.

Самым благородным решением будет BaseCustomEvent - но это уже через чур замудрежка.
Что то типа
Код AS3:

TestEvent extends BaseCustomEvent extends Event
function ( e: BaseCustomEvent )  { if(e is TestEvent ) do it }


Dukobpa3 19.02.2014 05:35

рас: В случае с конкретным ивентом клавиатуры и конкретным ивентом мыши - абстрактный кастом-ивент благородным решением не будет.
два: звездочка и обжект по сути своей не отличаются. Юзай что нравится. Но в коде если звездочка то наверное кому-то понятнее что туда разные данные входить могут. Мне пофиг.
три: пример с кастомивентом, а затем проверкой типа - вполне реализуется и со звездочкой и с обжектом. Если идет проверка типа то нафига нам кастом-ивент?

Wolsh 19.02.2014 07:19

Что-то я не понял. Так мы принимаем события или все подряд?
in4core, мне искренне жаль, что для тебя поставить звездочку равносильно "предусмотреть ситуации", и что тебе никак "иначе не скомпилиться".

Akopalipsis 19.02.2014 07:27

Цитата:

Так мы принимаем события или все подряд?
Вот эта фраза уже изменила многое в моем мышлении.

ObOs 19.02.2014 11:44

А какая необходимость пихать в один обработчик то что "подул ветер" и то что "хрюкнул кабан".
Почему бы не
Код AS3:

private function mouseEventHandler(e:MouseEvent):void{
        funcName();
}
 
private function keyboardEventHandler(e:KeyboardEvent):void{
        funcName();
}


Да, строчек прибавится, но повысится человекочитаемость.
Я не прав?

Wolsh 19.02.2014 12:10

Цитата:

Я не прав?
Это в идеале. Но иногда читаемость и понимаемость оказываются разными вещами. Иногда важнее показать, что это одно и то же. Но в идеале да, S.O.L.I.D.

Psycho Tiger 19.02.2014 13:13

Наверное, реагировать надо будет не на все кнопки скопом, а на какую-то одну (или не реагировать на какую-нибудь – например, по esc вызывается меню игры и не должен происходить прыжок). Это явно не должно происходить там же, куда может заглянуть обработка мыши.
Я за ObOs'a.


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

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