2008-11-22 103 views
1

我將從AS2 TP AS3一些ActionScript代碼,而我最終設法獲得大部分重新工作(這是一個的allmost完全不同的語言,分享只是一個小的語法相似)。最後一件仍然不起作用的東西是加載外部圖像的代碼。從AS2到AS3加載外部圖像

也許這已經在AS3中發生了變化,但我真的認爲這很奇怪,加載一個圖像,你使用loadVideo,爲什麼不loadImage? (在另一方面Flash應用程序的不斷呼籲閃光燈視頻即使它不是用於動畫的話)。這不工作了,什麼我發現是一個相當複雜的代碼,據說能夠替代這oneliner imageholder.loadVideo(url);是這樣的:

var urlreq:URLRequest = new URLRequest(url); 
var theloader:Loader = new URLLoader(); 
theloader.load(urlreq); 
theloader.addEventListener(Event.COMPLETE, function(event:Event):void { 
     imageholder.addChild(theloader); 
    } 
); 

但是,這並不工作..我做錯了,還有更適合在AS3中加載圖像的功能嗎?

回答

1

我認爲你正在做的事情有點太複雜 - 這裏就是你需要加載一個單一的形象是什麼:

import flash.display.Loader; 
import flash.event.Event; 
import flash.net.URLRequest; 

var imageLoader:Loader = new Loader(); 
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event){ 
// e.target.content is the newly-loaded image, feel free to addChild it where ever it needs to go... 
}); 
imageLoader.load(new URLRequest('yourImage.jpg')); 

...你可以推斷從那裏加載圖像列表?運行該代碼在for循環中,每次(在陣列的地方,或許還是一個對象的屬性)分配一個不同的變量,你的新加載e.target.content這樣你就可以說「onComplete'型外訪問功能。

0

我發現了一個soulution,我自己。

初始化或卸載圖像的列表(影片剪輯的實際情況):

for (i = 0; i<imgHolders.length; i++) { 
    var loader:Loader = imgHolders[i].getChildByName("imgloader"+i); 
    if (loader) { 
     loader.unload(); 
    } else { 
     loader = new Loader(); 
     loader.name = "imgloader" + i; 
     // Does't seem to work, commented out. 
     //loader.addEventListener(Event.COMPLETE, centerimage); 
     imgHolders[i].addChild(loader); 
    } 
} 

,當我需要改變形象:

var loader:Loader = imgHolders[index].getChildByName("imgloader"+index); 
loader.load(new URLRequest(newurl); 

我嘗試添加一個聽者過於居中圖像,但它似乎並沒有被調用?該centerimage功能做的第一件事是trace("centerImage");至極都沒有出現...

+0

請問您可以發佈您的「centerimage」功能代碼嗎? – defmeta 2008-11-22 21:50:08

+0

讓我們問一下在另一個問題中使圖像居中,只是爲了保持組織。 – 2008-11-23 20:11:05

3

其中一個最常見的問題的人有裝載機是他們聽的事件是什麼。您需要確保您正在監聽大多數事件的loader.contentLoaderInfo,而不是加載器本身。這是您提供的示例中的主要問題。

//this is WRONG 
loader.addEventListener(Event.COMPLETE, onLoad); 

//this is RIGHT 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad);