Thursday, December 6, 2007

SWF, EXE, MDM 的 exe 都能關掉程式的 function

import mdm.*;

mdm.Application.init(this,OnInit);
mdm.Application.enableExitHandler();


function OnInit():void {
//mdm.Dialogs.prompt("Zinc with Flash CS3, Text Saver!");
}

// 想關程式的時候就 call MyClose()

function MyClose(){
fscommand( "quit" ); // for flash player
mdm.Application.exitWithCode(0); // for mdm

}

/*
這樣子不管單純用 swf, or swf -> exe 都可以透過 fscommand 來關程式 (用 Flash IDE開發, Debug Mode的時候)

而在用 mdm 包裝後, mdm.Application.exitWithCode(0) 就可以關程式了

所以不管你是在什麼階段都能用。
*/

Monday, December 3, 2007

Note : Adobe Flex 2 (Training from the Source)


Lesson 24 Using Shared Objects
Shared Objects 可以由複雜的資料結構組成(話是這樣說沒錯,但是目前的經驗是,也只有簡單的資料型別可以,BitmapData 等大型的東西就要轉成Byte 寫進去,再自己 parse出來了)。學到的重點是使用前最好 instantiate 給它 ex. example.data.accounts = new Array();。另外就是,如果存的東西比較複雜 ex. boolean + array => example.data.accounts = {hasWork:Boolean, buyBooks:Array}。

Note: Essential ActionScript 3.0


Chap 13 Exceptions and Error Handling

講的是 try/ catch/finally 的使用跟邏輯。有學過Java 的人應該很熟練。


Chap 14 Garbage Collection

Programmer 無法強迫System 做 Garbage Collection,甚至連提示它可以 collect 的指令好像沒有,所以一個objct 就算 reference 被設成 null,還是有可能繼續作用(這個還滿重要的,不是設成 null 就沒事了)。你只能自己讓 Deactivate Object(進入可回收狀態,回收時間仍然由系統決定),也就是
  1. 拿掉 Event Handler
  2. 停止 timer 跟 intervals
  3. 停止 playhead (不繼續播放)
  4. 把唯一由自己reference 到的object 也 deactivate。

另外一點就是,如果可以重複使用一個Object就重複使用,而 不是因為方便就一直new,這樣很容易就會把記憶體用光(雖然, 這樣就可以觸發 Garbage Collection!!!)。

使用 MDM 包裝 swf 檔成為全螢幕執行的設定方式

Style-> Window Settings : No Border
Size/Position-> Window Size: MovieSize
Extras : Maximized

from Jones