Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex AS3:通过dispatchEvent-pass参数进行事件调度?_Apache Flex_Actionscript 3_Events - Fatal编程技术网

Apache flex AS3:通过dispatchEvent-pass参数进行事件调度?

Apache flex AS3:通过dispatchEvent-pass参数进行事件调度?,apache-flex,actionscript-3,events,Apache Flex,Actionscript 3,Events,我想从我的类中发送一个事件以及一个url 我知道我可以做到以下几点: import flash.events.EventDispatcher; private function thumbClick(e:MouseEvent):void { dispatchEvent(new Event("clicked")); } 但我不知道我将如何在活动中发送参数 此外,在我的主应用程序runner中,我尝试: var my_ev:Event = new Event("clickedImage")

我想从我的类中发送一个事件以及一个url

我知道我可以做到以下几点:

import flash.events.EventDispatcher;

private function thumbClick(e:MouseEvent):void
{
   dispatchEvent(new Event("clicked"));
}
但我不知道我将如何在活动中发送参数

此外,在我的主应用程序runner中,我尝试:

var my_ev:Event = new Event("clickedImage");
my_ev.hasOwnProperty(e.currentTarget.link);
dispatchEvent(my_ev);
…但我不确定这是否是正确的语法

谢谢你的帮助,
jml

我只是创建了一个自定义事件类

import flash.events.Event;  


public class ThumbnailEvent extends Event
{
    public static var THUMB_CLICKED:String = "thumbClicked";
    public var url:String;

    public function ThumbnailEvent (type:String,url:String)
    {
              super(type);
              this.url = url
    }
}
然后像这样使用它:

var thumbEvent:ThumbnailEvent = new ThumbnailEvent(ThumbnailEvent.THUMB_CLICKED,"myURL");
dispatchEvent(thumbEvent);

我只是定制了一个事件类

import flash.events.Event;  


public class ThumbnailEvent extends Event
{
    public static var THUMB_CLICKED:String = "thumbClicked";
    public var url:String;

    public function ThumbnailEvent (type:String,url:String)
    {
              super(type);
              this.url = url
    }
}
然后像这样使用它:

var thumbEvent:ThumbnailEvent = new ThumbnailEvent(ThumbnailEvent.THUMB_CLICKED,"myURL");
dispatchEvent(thumbEvent);

Allan是正确的,您将希望进行自定义事件。有几件事需要注意:

import flash.events.Event;  

public class ThumbnailEvent extends Event
{
    public static var THUMB_CLICKED:String = "thumbClicked";

    private var _url:String;
    public function get url():String { return _url }

    public function ThumbnailEvent (type:String, url:String, bubbles:Boolean=false, cancelable:Boolean=false)
    {
        super(type,bubbles,cancelable);
        _url = url
    }

    override public function clone():Event
    {
        return new ThumbnailEvent(type, url, bubbles, cancelable);
    }
}
自定义事件需要始终覆盖克隆。如果事件冒泡或以任何方式中继,则需要此方法。自定义属性应该是具有只读getter的私有属性。这是一项标准惯例,旨在防止在整个活动期间发生财产变更

使用此方法会将代码更改为:

private function thumbClick(e:MouseEvent):void
{
   dispatchEvent(new ThumbnailEvent(ThumbnailEvent.THUMB_CLICKED, myUrlString));
}

//elsewhere

addEventListener(ThumbnailEvent.THUMB_CLICKED, thumbClickedHandler);

private function thumbClickedHandler(event:ThumbnailEvent):void
{
    var link:String = event.url;
}

Allan是正确的,您需要创建一个自定义事件。有几件事需要注意:

import flash.events.Event;  

public class ThumbnailEvent extends Event
{
    public static var THUMB_CLICKED:String = "thumbClicked";

    private var _url:String;
    public function get url():String { return _url }

    public function ThumbnailEvent (type:String, url:String, bubbles:Boolean=false, cancelable:Boolean=false)
    {
        super(type,bubbles,cancelable);
        _url = url
    }

    override public function clone():Event
    {
        return new ThumbnailEvent(type, url, bubbles, cancelable);
    }
}
自定义事件需要始终覆盖克隆。如果事件冒泡或以任何方式中继,则需要此方法。自定义属性应该是具有只读getter的私有属性。这是一项标准惯例,旨在防止在整个活动期间发生财产变更

使用此方法会将代码更改为:

private function thumbClick(e:MouseEvent):void
{
   dispatchEvent(new ThumbnailEvent(ThumbnailEvent.THUMB_CLICKED, myUrlString));
}

//elsewhere

addEventListener(ThumbnailEvent.THUMB_CLICKED, thumbClickedHandler);

private function thumbClickedHandler(event:ThumbnailEvent):void
{
    var link:String = event.url;
}

好极了。谢谢你的帮助!我没有意识到事件可以用来将事物组合在一起。。。应该有。别担心:)是的,按照乔尔的方式做,我只是有时候有点懒。。好极了。谢谢你的帮助!我没有意识到事件可以用来将事物组合在一起。。。应该有。别担心:)是的,按照乔尔的方式做,我只是有时候有点懒。。hahaThanks非常感谢包括这些细节,Joel。非常感谢包括这些细节,Joel。