出現氣泡類調度事件我有由一個主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