|
|
|||||
Регистрация: Oct 2009
Сообщений: 12
|
Неколько простых вопросов по Event.
Доброго времени суток. В AC3 я совсем нуб.
Подскажите как мне отловить событие скрытие элемента типа MovieClip - то есть visible = false через addEventListener. Как устанавливать прослушиватель я разобрался, но вот на какое событие вешать выполнение функции не могу найти. И еще подскажите как в выполняемую функцию передавать кроме Event собственные параметры (переменные). Желательно просто кусов кода с addEventListener. И еще. Насчет собственных эвентов. Есть MovieClip с именем mp1, на 60 фрейме прописываю: this.dispatchEvent(new Event("myAlertEvent")); В первом фрейме Scene1 ставлю прослушку кодом: this.mp1.addEventListener("myAlertEvent , f_AlertFunc); Событие не срабатывает, думаю все несколько сложнее. Помогите начинающему, можно ссылками на мануалы или примером кода. Заранее огромное спасибо. |
|
|||||
Цитата:
1) Для клипа, который должен оповещать у своем скрытии, написать класс унаследованнй от MovieClip. 2) В нем переопределить set visible и рассылать свое собственное событие public override function set visible(value:Boolean):void{ super.visible = value; if (value) dispatchEvent(new Event("SHOW")) else dispatchEvent(new Event("HIDE")) } Добавлено через 6 минут Цитата:
Чо каксается вашего примера, то у меня все работает. может вы что-то не правильно описали? |
|
|||||
Регистрация: Oct 2009
Сообщений: 12
|
Разобрался с dispatchEvent и с событием скрытия MovieClip через все тот же dispatchEvent.
- написать собственнй класс события унаследованный от Event, который будет иметь еще одно поле с данными Можно поподробнее как создавать наследников класса в AC3 и потом работать с ними |
|
|||||
import flash.events.Event; public class CustomEvent extends Event { public static const SOMETHING_HAPPEND : String = "some"; private var _data : Object; public function CustomEvent(type:String, data:Object=null, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); _data = data; } public function get data():Object{ return _data; } } object.dispatchEvent(new CustomEvent(CustomEvent.SOMETHING_HAPPEND, {message :"hi", value:5})); а в листенере так будет function myEventHandler(event :CustomEvent):void{ trace(event.data.message); trace(event.data.value); } Почитайте про пользовательские события. |
|
|||||
Регистрация: Oct 2009
Сообщений: 12
|
Про пользовательские события я уже разобрался, но все равно огромное спасибо. Сейчас более интресует возможность отсылать в функцию вызываемую addEventListener
при событии "complete" в объекте типа URLLoader кроме стандартного Event, собственные переменные. Поясню. Есть URLLoader загружающий в цикле картинки в определенные MovieClipы (Pan_1, Pan_2, Pan_3, Pan_"Type1", где переменная Type1 берется из mysql базы). На данный момент он не работает - картинки не выводятся на MovieClip. for (var j = 1; j < RecArr.length; j++){ var CurF:Array = RecArr[j].split("%|%"); var Type1:String = CurF[0].toString(); var Type1:String = CurF[1].toString(); Pan = getChildByName('Pan_' + Type1); var ImgLoader:Loader = new Loader(); var UrlRequest:URLRequest = new URLRequest('/menu/mi_' + Type1 + '_' + Type2 + '.png'); ImgLoader.load(UrlRequest); ImgLoader.addEventListener(Event.COMPLETE, f_ILoad); //- вот сюда надо бы еще отпрвлять ссылку на объект Pan } function f_ILoad(e:Event){ //- сюда должна также приходить ссылка на объект вставки DestPan var Image: Bitmap = (Bitmap)(e.target.content); // создаем контейнер типа Bitmap, возможно в данном случае нужен другой, т.к. формат картинки PNG Image.x = 20; Image.y = 40; //DestPan.addChild(Image); } Последний раз редактировалось niil; 15.10.2009 в 15:22. |
|
|||||
Оформите код тегами AS3
|
|
|||||
Регистрация: Oct 2009
Сообщений: 12
|
Последний раз редактировалось niil; 15.10.2009 в 15:22. |
|
|||||
Ну как вариант:
написать свой класс MyLoader наследник от Loader, который будет делать то же самое, только будет иметь дополнительное поле dest_clip - клип,в который аттачится картинка будет. Тогда в листенере можно будет его достать как Если есть другие варианты, проще, то будет самой интересно узнать |
|
|||||
Регистрация: Oct 2009
Сообщений: 12
|
Вполне разумно. Вопрос: расширение классов осуществляется только через подключаемый as файл, в котором может быть например такое:
package { import flash.net.URLLoader; public class URLLoaderEx extends URLLoader { public var CompName:String = new String; } } Для расширения компонента URLLoader на переменную CompName типа String - этого достаточно? |
|
|||||
Нужно отдельный файл с классом создавать. Да и вообще предпочтительнее код в классах писать, а не в кадрах.
Цитата:
|
Часовой пояс GMT +4, время: 13:45. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|