嗨我试图在As3中加载一些外部jpeg。 它在Flash中本地工作正常,但它不能在我的服务器上工作。 我的应用也会同时加载YouTube视频。
function drawResult(index,videoID,song_title,thumbnail:String=null)
{
var theClip:resultRowClip=new resultRowClip ();
_clip.addChild(theClip);
myArray[index] = new Array(videoID,theClip);
theClip.y=0+(43*(index-1));
theClip.rowText.text = song_title;
theClip.rowBack.visible = false;
if (thumbnail != ""){
theClip.tHolder.visible=true;
loadImage(thumbnail,index);
}
}
function loadImage(url:String,index):void
{
//this.myClip.myText.text += "load image";
// Set properties on my Loader object
var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest(url));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (evt:Event){imageLoaded(evt,index)});
}
function imageLoaded(evt,id):void
{
//this.myClip.myText.text += "id : evt : " + evt.status;
// Load Image
var image:Bitmap = new Bitmap(evt.target.content.bitmapData);
myArray[id][1].tHolder.addChild(image);
myArray[id][1].tHolder.width=myArray[id][1].tHolder.width*0.35;
myArray[id][1].tHolder.height=myArray[id][1].tHolder.height*0.35;
}
有谁知道问题是什么?
**我从io Error中添加了两个Evenet监听器:
imageLoader.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
这是处理错误的功能:
private function ioErrorHandler(event:IOErrorEvent):void {
this.myClip.myText.text +=("ioErrorHandler: " + event);
}
无论如何,我没有错误......
我还尝试在imageLoader.load之前移动监听器,但它仍然是相同的...没有错误,也没有加载数据..
我将代码更改为patrikS建议:
function loadImage(url:String,index):void
{
//this.myClip.myText.text += "load image";
// Set properties on my Loader object
//if (index != 1) return;
var imageLoader:Loader = new Loader();
imageLoader.name = index.toString();
//myArray[index][1].addChild(imageLoader);
//imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (evt:Event){imageLoaded(evt,index)});
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
imageLoader.load(new URLRequest(url));
}
我当前的completeHandler函数(tnx patrikS):
private function completeHandler(evt:Event):void{
//this.myClip.myText.text += "id : evt : " + evt.status;
// Load Image
trace("evt target loader name : "+ evt.target.loader.name );
evt.target.removeEventListener(Event.COMPLETE, completeHandler );
var image:Bitmap = new Bitmap(evt.target.content.bitmapData);
myArray[evt.target.loader.name][1].tHolder.addChild(image);
myArray[evt.target.loader.name][1].tHolder.width=myArray[evt.target.loader.name][1].tHolder.width*0.35;
myArray[evt.target.loader.name][1].tHolder.height=myArray[evt.target.loader.name][1].tHolder.height*0.35;
//trace (hadar.y + "Y / X" + hadar.x);
}
它仍然只适用于Flash IDE,并且可以在任何浏览器上运行......
答案 0 :(得分:1)
尝试urlstream并检查crossdomain.xml:)
urlstream = new URLStream();
urlstream.addEventListener(Event.COMPLETE, onLoad);
urlstream.addEventListener(IOErrorEvent.IO_ERROR, onErr);
urlstream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onErr);
urlstream.load(req);
private function onLoad(e:Event):void {
var ba:ByteArray = new ByteArray();
urlstream.readBytes(ba, 0, urlstream.bytesAvailable);
_loader.contentLoaderInfo.addEventListener(Event.INIT, onBytesLoad);
_loader.loadBytes(ba);
}
答案 1 :(得分:0)
应在调用load()方法之前添加监听器。 使用完整事件监听器的闭包并没有真正的优势。想想要删除事件监听器!
function loadImage(url:String, index:int):void { //this.myClip.myText.text += "load image"; // Set properties on my Loader object var imageLoader:Loader = new Loader(); imageLoader.name = index.toString(); //make sure you to add your listeners here! imageLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR,ioErrorHandler); imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler ); imageLoader.load(new URLRequest(url)); } function completeHandler(event:Event ):void { //imageLoaded(evt,index); trace( event.target.loader.name ); event.target.removeEventListener(Event.COMPLETE, completeHandler ); }
答案 2 :(得分:0)
在调试模型中,您可以从任何可用站点加载文件,但是可以发布模型。 可能是这个帮助:http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html