我正在努力将参数传递给onComplete事件处理程序。
似乎我的问题在于event.Complete code ..
我只是想从网址加载图片并传输参数。
这是我的代码:
var imageURLRequest:URLRequest = new URLRequest(pic);
var myImageLoader:Loader = new Loader();
myImageLoader.load(imageURLRequest);
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(evt:Event.COMPLETE){
doIt(evt, "Shift key was down:")
},false,0, true);
function doIt(evt:Event, msg:String) {
var myBitmapData:BitmapData = new BitmapData(myImageLoader.width, myImageLoader.height);
myBitmapData.draw(myImageLoader);
var myBitmap:Bitmap = new Bitmap;
myBitmap.bitmapData = myBitmapData;
}
非常感谢。
答案 0 :(得分:2)
从处理程序内部函数中删除.COMPLETE
,以便您的侦听器如下所示:
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event)
{
doIt(evt, "Shift key was down:")
} , false, 0, true);
答案 1 :(得分:2)
将Loader
类视为加载程序,而不是DisplayObject
,即使它是:
var myBitmap:Bitmap;
var contentLoader:Loader = new Loader();
contentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleComplete);
contentLoader.load(imageURLRequest);
function handleComplete(e:Event):void
{
myBitmap = contentLoader.content as Bitmap;
}
答案 2 :(得分:2)
首先,正如Gio所述,从.COMPLETE
中移除evt:Event.COMPLETE
,因为它返回的是字符串而不是函数所需的事件。
然后,我建议您将参考保留在变量中以使用useWeakReference
,而不是在true
中将最后一个令人难以置信的不可预测参数(addEventListener()
)设置为removeEventListener()
。在合适的时间。一种方法(在回答你的问题时)是:
var imageURLRequest:URLRequest = new URLRequest(pic);
var myImageLoader:Loader = new Loader();
myImageLoader.load(imageURLRequest);
var functionDoIt:Function = doIt("Shift key was down:");
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, functionDoIt);
function doIt(msg:String):Function {
return function(evt:Event):void {
// Now you can use both "msg" and "evt" here
var myBitmapData:BitmapData = new BitmapData(myImageLoader.width, myImageLoader.height);
myBitmapData.draw(myImageLoader);
var myBitmap:Bitmap = new Bitmap(myBitmapData);
}
}
// Remove the listener when you don't need it anymore:
//myImageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, functionDoIt);
通过阅读this answer,您可以更好地理解此解决方案。