![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
|
Само событие выглядит так:
package { import flash.events.Event; public class SmartLoaderEvent extends Event { public static const PROGRESS_UPDATE:String = "progress_update"; public var current:Number; public var total:uint; public function SmartLoaderEvent(type:String) { super(type); } public override function toString():String { return formatToString("SmartLoaderEvent"); } } } Отлавливаю addEventListener(event:Event); trace(event.total); Пишет: 1119: Access of possibly undefined property total through a reference with static type flash.events:Event. Корень проблемы ясен - приходит-то Event, а не мой кастом ивент(если вписать мое кастом событие тож ругается), но не доходит как реализовать и слышал, что есть решение. Какое? |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
addEventListener(event:Event) -- что это такое?
Цитата:
|
|
|||||
|
Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
|
Да, кстати, target и currentTarget учитываю, просто это не по-джедайски.
Добавлено через 4 минуты Конечно: |
|
|||||
|
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
Я что-то вобще не пойму Ваш класс пользовательского события.
Мы начинаем с чего при создании пользовательского события? 1. Расширяем класс Event (это Вы успешно выполнили) 2. Затем создаем статическую переменную в описании класса, в которую записываем строковое имя нашего пользовательского события (это Вы тоже сделали) 3. В метод конструктор, в качестве параметров передаем имя события, указываем является ли оно всплывающим, обладает ли стандартным поведением, и свои дополнительные параметры. 4. Далее в метод конструктор суперкласса, коим в данном случае является расширяемый нами класс Event, мы должны передать параметры метода конструктора нашего класса (опуская свои дополнительные параметры) - тут у Вас не понятно что передается и откуда берется. 5.Перекрытие метода toString - сплошная загадка его реализация в Вашем коде. 6. Где обязательное перекрытие метода clone ??? в общем код пользовательского события - нечитаем и достаточно удивителен. p.s. но не удивительно, то, что ничего не работает! |
|
|||||
|
Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
|
Цитата:
Цитата:
Цитата:
Добавлено через 57 минут Кто уже решил эту проблему направьте на путь истиный. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Цитата:
ты в функции получаешь через event ссылку на объект типа Event о чем тебе и сообщает компилятор. Хотя по сути объект является SmartLoaderEvent, но чтобы компилятор воспринимал его как таковой к нему нужно привести твой event
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ Последний раз редактировалось SunShadow; 13.07.2009 в 14:35. |
|
|||||
|
Регистрация: Jun 2007
Адрес: Москва
Сообщений: 86
|
SunShadow, спасибо!
Решили с коллегой этот вопрос. Оказуется кастом ивенту нужно обязательно создать функцию clone ибо событие приходит в виде клона кастома ивента. Соответственно, клон должен помнить параметры нашего ивента. Вот рабочий класс кастом ивента: package { import flash.events.Event; public class SmartLoaderEvent extends Event { public static const PROGRESS_UPDATE:String = "progress_update"; public var current:Number; public var total:Number; public function SmartLoaderEvent(type:String, current_value = NaN, total_value = NaN, bubbles:Boolean=false, cancelable:Boolean=false) { super(type, bubbles, cancelable); current = current_value; total = total_value; } public override function clone():Event { return new SmartLoaderEvent(type, current, total, bubbles, cancelable); } public override function toString():String { return formatToString("SmartLoaderEvent", "type", "bubbles", "cancelable", "eventPhase"); } } } } обработчик Тема исчерпана. |
|
|||||
|
Как приятно, что автор ветки не ограничился "Всем спасибо, проблема решена" а привел рабочий код!
Помогло, спасибо ![]()
__________________
coming soon... |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:31. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|