[Flash] Loader set init Width / Height 的問題


問題很簡單,就是當自己要 load image, swf 的時候,不能set loader 的 width 和 height. (set 了之後就不會 render image).

Chowky 在自己試過有過這種問題。

var loader:Loader = loader.load(new URLRequest("images/testimg.jpg");

loader.addEventListener(Event.COMPLETE,completeHandler());

private function completeHandler():void
{
//set 了之後就render 不到image.
loader.width = 100;
loader.height = 100;
}

之後chowky 就找了很久,都不太明白問題的原因。
坊間有太多不同的解決方法,不過看完就明白到問題原因。

簡單來說,因為 loader 未load完 (chowky 估計是Event.COMPLETE 的時間都未load 完成)

[更新一下,雖然loader 已經load 完,不過content 未完成 (這個logic 雖然不太通),就是image 未ready。所以我們應該listen _loader.contentLoaderInfo 而不是_loader 本身]

chowky 見過會利用scale 的方法去做。(算吧了)

var _loader:Loader=new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
_loader.load(new URLRequest("images/myphoto.jpg"));
this.addChild(_loader);

function loadCompleteHandler(evt:Event) {
	evt.target.content.height=100;
	evt.target.content.width=100;
        trace("Finish resize");
}

不過 chowky 的解決方法是自己寫一個class extends sprite ,再update sprite 的size. chowky 覺得這種做法比較適合,custom loader class (oh….又花了一整天)….

真辛苦呢。

Share

, , , , ,

  1. #1 by sizka on March 8, 2010 - 9:32 pm

    thanks for your article that helpful to me Q_Q

  2. #2 by Chowky on March 9, 2010 - 2:31 am

    I’m happy that my post helps you~.

(will not be published)

Anti-Spam Protection by WP-SpamFree