私は複数の非同期air.URLLoaderオブジェクトを使用していますが、イベントを発生させてurlloaderの "myId"を認識したいと思います。 私がダウンロードしているオブジェクトにはids自体がありますので、イベントリスナーのコールバック関数で、ダウンロードIDにprogress/finished/errorイベントが来たことを知りたいと思います。AIRのjavascriptクラスの拡張 - air.URLLoaderと静的イベント
コード:
# loader
addonLoader = new air.URLLoader();
//addonLoader.myId = my_id; <- does not work:
// error: Failed: Error #1056: Cannot create property my_id on flash.net.URLLoader.
addonLoader.dataFormat = air.URLLoaderDataFormat.BINARY;
addonLoader.addEventListener(air.IOErrorEvent.IO_ERROR, myDownloadListenerError);
addonLoader.addEventListener(air.ProgressEvent.PROGRESS, myDownloadListenerProgress);
addonLoader.addEventListener(air.Event.COMPLETE, myDownloadListenerFinished);
addonLoader.load(addonRequest);
# listener callback
function myDownloadListenerFinished(event)
{
air.trace('finished: '+event.target.myId);
// i need the addonLoader.myId here
// i have access to the caller, but i cannot add my own property/value to it
air.Introspector.Console.dump(event);
}
addEventListenerをコールバック関数は、フレームワークごとにパラメータとしてだけイベントに制限されています。イベントは大気からも来て、私はそれらを変更する方法を知らない(myIdを注入する)。
また、jQuery.extend()をair.URLLoaderの単純な値/ getter/setterオブジェクトで試しましたが、成功しませんでした。
イベントダンプ:
{
bubbles=false
bytesLoaded=262144
bytesTotal=10933705
cancelable=false
clone=[function]
{
length=0
}
currentTarget=[object URLLoader]
{
addEventListener=[function]
bytesLoaded=262144
bytesTotal=10933705
close=[function]
data=undefined
dataFormat=binary
dispatchEvent=[function]
hasEventListener=[function]
load=[function]
removeEventListener=[function]
toString=[function]
willTrigger=[function]
}
eventPhase=2
formatToString=[function]
{
length=1
}
isDefaultPrevented=[function]
{
length=0
}
preventDefault=[function]
{
length=0
}
stopImmediatePropagation=[function]
{
length=0
}
stopPropagation=[function]
{
length=0
}
target=[object URLLoader]
{
addEventListener=[function]
bytesLoaded=262144
bytesTotal=10933705
close=[function]
data=undefined
dataFormat=binary
dispatchEvent=[function]
hasEventListener=[function]
load=[function]
removeEventListener=[function]
toString=[function]
willTrigger=[function]
}
toString=[function]
{
length=0
}
type=progress
}