ART─智邦公益電子報
enews.url.com.tw · May 13,2009Flash Lite 3 security issue
Flash Lite3.0主要是要跟Flash8做相容,但其實很重要的bitmapdata卻完全不支援。更糟的是好的不學盡學壞的,Flash8最糟糕的安全性設定卻是完全移殖到FlashLite3了,造成許多要連線的swf都無法連線,原因及解法如下:
沒 錯,就是在publish時要設local或是network only。不過,事情如果這麼簡單就好了,因為在一般S60 Standalone player上跑swf時,其實就像是我們在PC上用Standalone player執行swf。而在PC上的話,要連線的content會跳出一個設定選項,請你把這個swf的所在路徑設定可信任的位置,像下面這個畫面
而在手機中,是沒有這個介面讓你設的,所以我不論有沒有設什麼local, network,根本就完全無法連線。
(local or network設定,也許是要把swf框在html裏,用手機browser去看時,才有效果吧,我猜)
最後發現的方法,是要在Other目錄中,自行開一個叫"Trusted"的目錄,把所有要連線的東西都放進去,就可以正常連線了。
參考資料:
Flash Lite 3 security
XMLSocket to localhost problem
Nokia N95 Debranding Guide
Flash Lite 3, accessing local and remote data how to
Device Central CS3的該死bug
今天發現Device Central CS3一個可惡的bug,出現條件是Flash Lite3.0並使用loadMovie or loadClip的狀況下。
我建立兩個檔,test.fla及test2.fla,兩個的publish setting都是FlashLite3.0 + Actionscript2.0,使用Flash CS3,並在Device Central下瀏覽。
test.fla的內容為:
<textarea name="code" class="js"><br />function myTrace(str){<br /> trace_txt.text=str+" "+trace_txt.text<br />}<br />myTrace("_root: "+_root)<br />myTrace("_root.createEmptyMovieClip: "+_root.createEmptyMovieClip)<br />myTrace("_root.getNextHighestDepth: "+_root.getNextHighestDepth)<br />myTrace("_root.a: "+_root.a)<br /></textarea><br />
而test2.fla的內容為:
<textarea name="code" class="js"><br />_root.a=5<br />_root.createEmptyMovieClip("mov",1)<br />mov.loadMovie("test.swf")<br /></textarea><br />
很簡單的測試,產生出test.swf後,以DeviceCentral來previeew test2.swf
若選擇FlashLite2.x版的模擬器,則會看到正常結果,如下:
若選擇FlashLite3.x版的模擬器,則會看到不正常結果,如下:
此bug造成的結果是,被load的swf,無法取得_root下的成員,雖然我沒一一實測,但光上面的狀況,就夠可怕了。
所幸此bug只存於Device Central CS3裏的FlashLite3.x模擬器,實際手機測FL3則是ok,Device Central CS4也無此bug。
>>下載測試檔:DeviceCentralCS3_bug.zip