【发布时间】:2011-07-19 09:20:04
【问题描述】:
我有两个 swf 文件,A.swf 和 B.swf,每个文件都有其 Document Class:B.swf 加载到 A.swf 的 MovieClip 中。加载时,B.swf 创建 CSDragger 的一个实例(它是一个类扩展 MovieClip 的库对象)并将该实例的 ID 属性设置为某个值。当用户在 MovieClip 上拖放此拖动器时,它也会发送一个包含 ID 值的自定义事件。 自定义事件定期到达B.swf,但从不到达A.swf。除了重构CSDragger类(例如在B.swf文档类中移动它的handleDrop方法)之外,有什么办法可以让事件发生到达 A.swf?我知道我可以拦截它并发送另一个事件,但我正在寻找不同的解决方案(如果有的话)。
A.swf 文档类构造函数体中包含以下内容:
var ldr = new Loader();
ldr.load(new URLRequest("B.swf"));
menuLoader_mc.addChild(ldr);
这是自定义事件类:CSDragger 类触发 ITEM_DATA 事件,该事件到达 B.swf 的文档类(但不是 A.swf 的文档类)。 B.swf 和 A.swf 里面当然有监听器。
package events {
import flash.events.EventDispatcher;
import flash.events.Event;
public class ItemEvent extends Event {
public static const ITEM_DATA:String = "ItemData";
public var data:*;
public function ItemEvent(type:String, data:*)
{
this.data = data;
super(type, true);
}
}
}
【问题讨论】:
-
大概是自定义事件冒泡设置为真?如果是这样,您是否在 B.swf 中的任何地方捕获它并致电
stopPropagation()? -
另外,您能否发布用于将 B 加载到 A 中的代码?
-
哦,我不调用 stopPropagation();
标签: actionscript-3 events