[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
About Chowky
Chowky 希望可以透過這個blog 來分享自己學到的知識。亦希望可以分享最新的資訊。 IT 轉變得很快,要常常留意市場的變化,面對大陸的競爭,香港的 IT 方面的人才要更有市場觸覺,緊貼市塲走勢。因為其他地方的IT技術已經走得比以往更快。不進則退,就讓大家一起來交流、提昇IT的心得! Chowky 因為工作關係,所以一開始接觸的是visual basic, foxpro ( 這不代表我老 ) 之後是 .NET, MSSQL 和 Crystal Report. 由工作學到的project management, system analysis and design 以及 system testing, user acceptance tests and different documentations. 另外,由不同的freelance 方面學到dreamweaver, javascript, php, mysql. 後來興起CMS wave, Chowky 亦學會了Joomla! 以及常用的javascript framwork: jquery and mootool. 連deisgn 都要自己包辦,所以接觸了photoshop, illustrator, firework. 新的工作方面,要利用RIA -- Flex and AIR 方面的技術。所以緊接下來應該會多一點分享ria 方面的技術 Chowky 所說的未必是對的,但我深信我所說的是未來 IT Trend. 大家亦應抱著懷疑的態度去分析每一件事,未經思考不要輕易相信。

2 Comments

  1. thanks for your article that helpful to me Q_Q

  2. I’m happy that my post helps you~.

Leave a Reply