出现气泡类调度事件我有由一个主Flex应用程序加载的小SWF AS3的Flash应用程序。与不上的舞台
主要Flex应用程序中包含的SWFLoader和我加在 SWFLoader.content事件侦听器来获取,我编写自定义事件。
现在每当我在申请喜欢我使用的功能dispatchEvent
创建活动,我要确保该事件的气泡参数为true。所以在这种情况下,事件会在舞台上起泡,直到它到达我的事件监听器,并且我可以正确处理事件。
问题所在时,我有一个静态类,我想从那里发出事件。因为它是一个静态类,而不是出现在我的舞台上的显示对象,所以它没有到哪里去冒泡,因此即使在我的主flex应用程序中我也无法获取自定义。
我尝试使用此事件与下面的代码:
new EventDispatcher().dispatchEvent(new CustomEvent(CustomEvent.EVENT_setAttribute,{'attr_name':attrName,'attr_val':attrVal)));
我的自定义事件的构造函数获取参数作为第二个参数。
如此看来,当我使用事件调度,事件仍然没有在那里泡,这就是为什么我没有在我的主应用程序接收它。
我该如何解决这个问题?我需要能够正确地派发一个事件在没有出现在舞台上的对象上。
主要需提供本人,为了用它来调度事件在舞台上的这个功能出现的对象。我确实希望有一个更好的解决方案来解决这个问题。
任何信息将不胜感激。
这是我的自定义事件类:
public class CustomEvent extends Event
{
public var command:String;
public var params:Object;
public static const CONTROL_TYPE:String = "eMyControl";
private static var EVENT_setAttribute:String = "set_attribute";
private static var gameAttributes:Object = new Object();
public static function setAttribute(attrName:String,attrVal:String):void {
gameAttributes[attrName]=attrVal;
new EventDispatcher().(new XpoEvent(XpoEvent.EVENT_setAttribute,{'attr_name':attrName,'attr_val':attrVal}));
}
public function CustomEvent(eventName:String, params:Object = null, bubbles:Boolean = true, cancelable:Boolean = false)
{
var _loc_6:String = null;
var _loc_5:String = "";
if (params != null)
{
_loc_5 = "params: ";
for (_loc_6 in params)
{
_loc_5 = _loc_5 + (_loc_6 + "=" + params[_loc_6] + " ");
}
}
trace("CustomEvent issued - " + eventName + " " + _loc_5);
super(CONTROL_TYPE, bubbles, cancelable);
this.command = eventName;
if (params != null)
{
this.params = params;
}
return;
}
}
,你可以在这里看到我有通行证attrName和Val到一个数组,然后分派自定义事件的静态函数调用的setAttribute。默认情况下,自定义类事件启用了气泡。 它似乎仍然是因为我没有使用阶段中出现的对象来调度事件,因而不允许主Flex应用程序正确捕获该事件。当你创建一个EventDispatcher实例,并派遣它的东西没有人会得到你的事件,因为没有人可以订阅它
<object In Stage>.dispatchEvent(new CustomEvent("testme"));
感谢
谢谢。我添加了一个函数来设置事件将从中冒泡的显示对象。 – ufk 2012-01-30 07:38:29