2013-02-03 200 views
2

我試圖在AS3的URL加載圖像變化的寬度和高度後消失,如下所示:影片剪輯在AS3

var myImageLoader:Loader = new Loader(); 
private var mcImage: MovieClip = new MovieClip(); 
var myImageLocation:URLRequest = new URLRequest("http://example.com/xyz.jpg"); 
myImageLoader.load(myImageLocation); 
mcImage.addChild(myImageLoader); 
mcImage.x = 100; 
mcImage.y = 100; 
//mcImage.width = 50; 
//mcImage.height = 50; 
addChild(mcImage); 

上面的代碼工作正常,但因爲我的願望圖像具有不同的尺寸與原始圖像相比,在此需要更改其大小。因此,在使用上面代碼中註釋過的行之後,mcImage會消失。

我試圖用mcImage.scaleX = myImageLoader.width/50,但由於myImageLoader是在開始時沒有加載,我們不能得到myImageLoader的寬度爲null。

+0

嘗試:myImageLoader.width = 50; myImageLoader.height = 50; – 2013-02-03 17:27:10

+0

我試過之前,同樣的問題 – csuo

+0

好。你需要等待圖像加載,然後管理它的大小。我會後回答 – 2013-02-03 17:32:19

回答

3

這是經常誤差設定的尺寸,則不能設置空顯示對象(對象的寬度和高度是零)的大小。要設置您需要先畫點什麼顯示對象的尺寸上它的graphics(例如1 * 1像素的矩形),但你應該明白,以後它,你將只是擴展您的顯示對象相對於它的原始尺寸,例如,如果你畫1 * 1個像素的矩形,並=身高= 50,將scaleX和scaleY設置將是50,所以你如果說對加載器加載的圖像將是巨大的大小:)這是關於閃存大小。

你的任務如何:有一個共同的規則 - 不要調整加載器大小,調整加載的圖像大小。正如我上面所說的,裝載程序的大小調整隻會縮放您的圖像,而不是設置大小。根據需要添加完整的處理程序並調整loader.content的大小。

例子:

public function astest() 
{ 
    var loader:Loader = new Loader(); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplte); 
    addChild(loader); 

    loader.load(new URLRequest("https://www.google.ru/images/srpr/logo3w.png")); 
} 

protected function onComplte(event:Event):void 
{ 
    EventDispatcher(event.target).removeEventListener(event.type, arguments.callee); 
    var image:DisplayObject = (event.target as LoaderInfo).content; 

    image.width = 50; 
    image.height = 50; 
} 
0

你需要與你的MC打之前,您的裝載機得到loadComplete事件

var myImageLoader:Loader = new Loader(); 
private var mcImage: MovieClip = new MovieClip(); 
var myImageLocation:URLRequest = new URLRequest("http://example.com/xyz.jpg"); 

myImageLoader.addEventListener(Event.COMPLETE, completeHandler); 
myImageLoader.load(myImageLocation); 

function completeHandler(e:Event){ 
    mcImage.x = 100; 
    mcImage.y = 100; 
    mcImage.width = 50; 
    mcImage.height = 50; 
    addChild(mcImage); 
    mcImage.addChild(myImageLoader); 
} 
+0

打我給它的Flash-廣場;),但你應該添加監聽器的contentLoaderInfo – 2013-02-03 17:38:32

+0

肯定。對不起,我回復得有點快。 –

0

試試這個:

var myImageLoader:Loader = new Loader(); 
//hide until loaded 
myImageLoader.visible = false; 
//listen for load completed 
myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); 
//...rest of your code (without setting width/height) 

然後加入這一調整大小和加載時使人們看到:

function completeHandler(event:Event):void 
{ 
    myImageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler); 
    myImageLoader.content.width = 50; 
    myImageLoader.content.height = 50; 
    myImageLoader.visible = true; 
}