![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 9
|
Как можно передать значение переменной в функцию ClickHandler() при
addEventListener(MouseEvent.CLICK,ClickHandler); или альтернативный вариант решения ? |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 76
|
ClickHandler как аргумент получит событие которое его вызвало, следовательно можно сделать класс, расширяющий базовое событие, использовать его вместо MouseEvent.CLICK, добавить в него публичных переменных и получать их значения в ClickHandler
Альтернатива - можно например сделать статический класс и использовать его как хранилище статических переменных, они так-же будут доступны в ClickHandler Последний раз редактировалось Онтожка; 10.08.2007 в 19:38. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 9
|
а можно пример класса, расширяющего базовое событие
и пример статического класса ? |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 76
|
вот класс расширяющий событие MouseEvent:
package {
import flash.events.*;
public class CustomMouseEvent extends MouseEvent{
public static var CLICKED_ONCE:String = "clickedOnce";
public var anything:*;
public function CustomMouseEvent(type:String,anything:*=null){
super(type);
this.anything=anything;
}
}
}
Вот класс для мувиклипа MenuButton в библиотеке, при нажатии на мувиклип будет трейсить текущую дату, которая берётся из CustomMouseEvent: package {
import flash.display.MovieClip;
import flash.events.*;
public class MenuButton extends MovieClip{
public function MenuButton(){
addEventListener(MouseEvent.CLICK,onClick);
addEventListener(CustomMouseEvent.CLICKED_ONCE, ClickHandler)
}
private function onClick(evt:MouseEvent):void{
dispatchEvent(new CustomMouseEvent(CustomMouseEvent.CLICKED_ONCE, new Date()))
}
private function ClickHandler(evt:CustomMouseEvent):void{
trace(evt.anything)
}
}
}
Вот вариант со статической переменной в классе (сам класс статическим быть не может, я немного напутал, сам новичёк в этом можно сказать )и в этом случае класс мувиклипа выглядит так: |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 9
|
Для первого случая : а если необходимо передать значение аргумента функции ClickHandler внутри функции MenuButton() ?
Последний раз редактировалось alexej81; 11.08.2007 в 23:15. |
|
|||||
|
нет логики: передавать аргумент в addEventListener (самому себе, заметь), чтобы добавить его в событие и передать потом в ClickHandler.., не проще сразу определить нужное свойство, а в ClickHandler им воспользоваться..
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 9
|
а если это свойство меняется динамически, в функции MenuButton ?
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 9
|
меняется, не в самом конструкторе, а в одном из его методов
а пример смены свойства в ClickHandler в зависимости от динамического значения внутри MenuButton ? |
|
|||||
package {
import flash.display.MovieClip;
import flash.events.*;
public class MenuButton extends MovieClip{
private var someProp:String;
public function MenuButton(){
addEventListener(MouseEvent.CLICK,onClick);
someProp="someVal";
}
private function onClick(evt:MouseEvent):void{
trace( "someProp : " + someProp );
}
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|