Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   в компоненте не кидается событие (http://www.flasher.ru/forum/showthread.php?t=93184)

mogadanez 15.03.2007 17:22

в компоненте не кидается событие
 
Делаю компонент для отправки комментария через вебсервис.


Код:

import mx.core.UIComponent;
import mx.events.UIEvent;
import mx.utils.Delegate;
import mx.controls.TextInput;
import mx.controls.Button;
import mx.data.components.WebServiceConnector;


[Event("send")]
class PostComment extends UIComponent
{
        static var symbolName:String = "PostComment";
        static var symbolOwner:Object = PostComment;
        var className:String = "PostComment";

        private var txtText:TextInput;
        private var txtSubj:TextInput;
        private var btnSend:Button;
        private var service2:WebServiceConnector;
       
        private var __reqID:String = "";
        private var __svcURL:String = "";

        function Dial() {
        }

       
    function onLoad() {
          btnSend.addEventListener("click", Delegate.create(this, btn_onClick));
    }
    function btn_onClick(eventObj:Object) {                       
          service2.WSDLURL = svcURL;
          service2.params = [requestID, txtSubj.text, txtText.text];       
          service2.trigger();       

          //пытаюсь диспатчнуть событие

            var eventObj = new Object();
          eventObj.type = "send";
          eventObj.target = this;
          trace("before")
          dispatchEvent(eventObj);       
          trace("after")
               
    }
       

        [Bindable]
        [Inspectable(defaultValue=0)]
        function set requestID (val:String){....}
        function get requestID ():String{....}
       
        [Bindable]
        [Inspectable(defaultValue=0)]
        function set svcURL (val:String){.....}
        function get svcURL ():String {....}
}

использую компонент:

Код:

my_win =  mx.managers.PopUpManager.createPopUp(_root, mx.containers.Window, true, {title:"Post Comment",closeButton: true });
 my_win.setSize(300, 140);       
 my_win.move(200, 100);
 var post= my_win.createClassObject( PostComment, "postcomment1", 5,{requestID: getReqID(), svcURL:svc_url()});
 post.move(0, 30);
//дальше пробовал по разному.
1: post.addEventListener( "send", function (evtObj):Void{trace("handler");} );
2: post.addEventListener( "send", Delegate.create(this, post_onSend) );

3:
 var postListner:Object = new Object();
 postListner.send= function() {    trace("handler"); };
 post.addEventListener("send", postListner);


событие не доходит, хотя onLoad срабытывает... коментарий создается.
дописал трейсы до и после dispatchEvent(eventObj) - выводятся.

и еще вопрос по компонентам. каждый раз когда я делаю Export SWC file, в ролике где использую компонент приходится удалять его из Library и добавлять снова. нельзя ли это автоматизировать?



P.S Жестко тут у вас модерят :rolleyes: .

etc 15.03.2007 17:28

Выкладывай исходник.

mogadanez 15.03.2007 19:14

вот
http://rsdn.ru/File/11521/test.rar

etc 15.03.2007 20:21

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

А ещё, скажи на милость, зачем ты отключил трейсы в публикации test.fla?
И ещё, ты подписываешься на событие send, которое твой компонент не высылает, он высылает after_send.

mogadanez 15.03.2007 21:13

Цитата:

У тебя нет нигде инициализации EventDispatcher-ом. Тебе нужно сначала инициализировать свой компонент диспетчером, а уж потом слать события.
имеется ввиду это:
private var dispatchEvent:Function;?

Цитата:

А ещё, скажи на милость, зачем ты отключил трейсы в публикации test.fla?
это как?


Цитата:

И ещё, ты подписываешься на событие send, которое твой компонент не высылает, он высылает after_send.
это я так тест кейс готовил =) изначально было одинаково

etc 15.03.2007 21:39

1) Нет, надо mx.events.EventDispatcher.initialize(this) в init();
2) Смотри в свойствах публикации;
3) Ну вот сделай одинаково.


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

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