Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Не проходит dispatchEvent (http://www.flasher.ru/forum/showthread.php?t=152837)

Nemez 23.03.2011 20:41

Не проходит dispatchEvent
 
Функция recordParser вызывается в процессе, работает, должна вызвать dispatchEvent и передать его в ControllerPenguin. Но этого не происходит.
Код AS3:

package {
        import flash.events.Event;
        import flash.events.EventDispatcher;
 
        public class Model5pinguin extends EventDispatcher {
 
 
                public static const INPUT_RECORD:String = "inputRec";
 
                public function Model5pinguin() {
 
                }
                public function recordParser(recordNew : int, textName : String) : void {                       
                        trace ("newRecord ");
                        this.dispatchEvent(new Event(Model5pinguin.INPUT_RECORD));
                }
        }
}
 
package {
        import flash.events.MouseEvent;
        import flash.events.Event;
        import flash.display.Sprite;
 
        public class ControllerPenguin extends Sprite {
 
 
                private var data5:Model5pinguin;
 
                public function ControllerPenguin() {
 
                        data5 = new Model5pinguin();
 
                        data5.addEventListener(Model5pinguin.INPUT_RECORD, recordGeschrieben);
                }
 
                private function recordGeschrieben(event : Model5pinguin) : void {
                        //    ......................................
                }


Idon 23.03.2011 21:03

Вы создаете событие Event, а слушаете событие Model5pinguin.INPUT_RECORD

Может так?
Код AS1/AS2:

private function recordGeschrieben(event : Event) : void {
//    ......................................
}


Nemez 23.03.2011 21:11

Цитата:

Сообщение от Idon (Сообщение 983231)
private function recordGeschrieben(event : Event) : void {
// ......................................
}

нет, не идет.

Idon 23.03.2011 21:21

Вообще, правильней было бы сделать свой класс событий:
Код AS3:

        public class Model5pinguinEvent extends Event {
                public static const INPUT_RECORD:String = "inputRec";
                public function Model5pinguinEvent( event_type:String, bubbles:Boolean = false, cancelable:Boolean = false ) {
                  super( event_type, bubbles, cancelable )
                }
 
        }

создавать его:
Код AS3:

this.dispatchEvent(new Model5pinguinEvent(Model5pinguinEvent.INPUT_RECORD));

и слушать:
Код AS3:

data5.addEventListener(Model5pinguinEvent.INPUT_RECORD, recordGeschrieben);
 
 
private function recordGeschrieben(event : Model5pinguinEvent) : void {
//    ......................................
}

Добавлено через 37 минут
У вас еще ошибка:

в методе
Код AS3:

                public function recordParser(recordNew : int, textName : String) : void {                        
                        trace ("newRecord " + newRecord);
                        this.dispatchEvent(new Event(Model5pinguin.INPUT_RECORD));
                }

параметр метода называется recordNew, а в trace вы пытаетесь вывести newRecord.

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

private function recordGeschrieben(event : Model5pinguin) : void {
}

где компилятор должен бросить ошибку о невозможности преобразования Event в Model5pinguin

etc 24.03.2011 00:09

Idon, свои события хотя бы в порядок приведите.

Nemez 24.03.2011 11:49

Таки никто не поможет?
private function recordGeschrieben(event : Event) уже менял, предыдущий вариант (event : Model5pinguin) выдал FDT.

Trein 24.03.2011 12:36

Приемник события по-любому с параметром типа Event нужно прописывать.
Код AS3:

private function recordGeschrieben(event:Event):void

Вы знаете попробовал ваш код с изменением типа события в применике и все работает.

Nemez 24.03.2011 13:12

Оказалось, евент идет по другой ветке. C изменением типа события в применике все сработало.

Idon 24.03.2011 13:50

etc, поясните.

etc 24.03.2011 13:58

Idon, у вас не описан clone(), никакого совпадения названия параметров с родительским классом, неправильно значение статической константы заодно.


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

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