問題很簡單,就是當自己要 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….又花了一整天)….
真辛苦呢。


#1 by sizka on March 8, 2010 - 9:32 pm
thanks for your article that helpful to me Q_Q
#2 by Chowky on March 9, 2010 - 2:31 am
I’m happy that my post helps you~.