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

Hobey 25.10.2014 13:34

Создать своё событие
 
Здравствуйте. Подскажите, пожалуйста, как создать свое событие, чтобы
добавлять его объекту вот так
Код AS3:

object.addEventListener(MouseEvent.MOUSE_HOVER, func);

Хочу добавить событие в класс MouseEvent.
Уже перелистал не мало инфы по этому вопросу, вроде бы туман начинает рассеиваться, но все равно ничего не понятно.
1. Как сделать так, чтобы событие срабатывало по составленному мной условию?
2. Как получить в моем классе ссылку на "object"?
3. Да и самое главное, как добавить событие к MouseEvent?

Gerbert 25.10.2014 15:21

Вот если Вы скажите, что готовы отказаться от собственного события с названием класса MouseEvent,
то я могу немного подсказать, не переписывать на форум книгу, а надеясь на то, что Вы понимаете что делаете,
написать отрывистый код.

Hobey 25.10.2014 16:33

Ну просто логично, что если событие связано с курсором, то и добавлять его в класс MouseEvent.
А так-то без разницы где оно будет находится, главное получить нужный результат.

Gerbert 25.10.2014 16:54

Просто нельзя залезть в класс от adobe и что-то в нем исправить.
Так что красивое слово MouseEvent Вам получить не удаться. Есть способ, но я его не скажу,
он бессмысленный и некрасивый.
И тогда ответы -
1) Вот так послать событие
Код AS3:

объектУнаследованныйОтEventDispatcher.dispatchEvent( new MyMouseEvent( MyMouseEvent,TYPE ) );

2) Передать её туда.
3) Никак.
4) Я подозреваю что Вы задумали, но по Вашем вопросам можно догадаться,
что Вы хотите сделать операцию на открытом сердце, после кулинарного училища.

Hobey 25.10.2014 17:05

Но это не ответ.(
То ли флеш сложный, то ли я старею. Как же с php было всё просто и красиво...
Думал что на форуме смогут помочь. Просто мне это надо чтобы плеер сделать на сайт. Ради этого сидеть неделю+ и изучать флеш не очень то и охото.
А делать, хоть даже и в маленьком приложении, грязный код не хочется, поэтому и задумал сделать событие.

Gerbert 25.10.2014 17:15

Цитата:

Ради этого сидеть неделю+ и изучать флеш не очень то и охото.
Тогда Вы должны понимать, что сидеть и пересказывать Вам книги, тоже не очень хочется.
Цитата:

Как же с php было всё просто и красиво...
Если бы Вы знали php, то у Вас бы сложностей с передачей в класс объекта не было.
В php все тоже самое, как и в as3.
Цитата:

Думал что на форуме смогут помочь.
Вы и в правду думали, что вам сделают плеер?

А вообще то, что Вы задумали, делают не так, но объяснять я вижу смысла нет, время жалко,
да и Вы все равно не поймете.

Hobey 25.10.2014 17:42

(случайное сообщение)

illuzor 25.10.2014 18:03

Hobey, погуглите "as3 пользовательские события". Попробуйте поменять подход к вашей задаче.
Вам нужно создать класс, расширяющий Event и с ним работать.

Gerbert 25.10.2014 18:27

Немного меня запутали...
Создали sprite-container и подписали его
Код AS3:

container.addEventListener( MouseEvent.MOUSE_OVER, overHandler );
container.addEventListener( MouseEvent.MOUSE_OUT, outHandler );

Затем в этот контайнер добавляете кнопки
Код AS3:

container.addChild( button );

Теперь, когда мышка наедет или съедет с кнопки вы получите событие.
По сути это все, но если вам нужно событие именно, когда мышка находится над кнопкой,
чтобы каждый кадр знать её место положение, то нужно в событии over подписываться, а в out
отписываться на событие MOUSE_MOVE.
То есть получается, что мышка наехала н кнопку и пошли события mouseMove, когда съехала,
они прекратились.

Hobey 25.10.2014 18:47

На да. Т.е. я создаю дочерний класс от MouseEvent
Код AS3:

package {
  import flash.events.MouseEvent;
 
  var event_hover:boolean = 0;
 
  class MouseHover extends EventMouse {
 
    public function MouseHover(type:String) {
      super(type);
    }
 
  }
}

Переменная event_hover отвечает за само событие.
Не понятно:
1. Как внутри этого класса получиться ссылку на "object", если событие добавлялось так
Код AS3:

object.addEventListener("func_MouseHover", outHandler );

2. Как сделать так, чтобы функция func_MouseHover вызывалась тогда, когда переменная event_hover равняется 1


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

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