一.設定讓FlashDevelop Air API Auto Complete
在Project Properties/compiler Option/SWC Include Lib
加入air swc的路徑
C:\Program Files\Adobe\Adobe Flash CS4\AIK1.5\frameworks\libs\air\airglobal.swc
C:\Program Files\Adobe\Adobe Flash CS4\AIK1.5\frameworks\libs\air\servicemonitor.swc
二.產生AIR
1.當設定的Project為AIR
在Project目錄下會有兩個bat檔CreateCertificate.bat與PackageApplication.bat
2.CreateCertificate.bat產生認證檔
編輯
1.設定Flex SDK路徑
set PATH=%PATH%;C:\flex_sdk_4\bin
2.設定這認證pfx檔案的,名字,密碼與輸出檔名 set NAME=MyName set PASSWORD=MyPassword set CERTIFICATE=MyName.pfx 這在產生air檔案時,會需要這帳號密碼確認
3.修改完,執行,即會產生一個pfx檔
3.PackageApplication.bat 封裝AIR
編輯
1.設定Flex SDK路徑 set PATH=%PATH%;C:\flex_sdk_4\bin
2.指定要使用的數位認證檔
set CERTIFICATE=MyName.pfx
3.設定要輸出的檔案路徑
set AIR_FILE=air/FlexTest1.air
4.執行,即產生AIR檔
4.注意
若在封裝AIR檔案發生錯誤
如application.xml error 102:invaid namespace
請確認,系統安裝的AIRSDK版本,與application.xml
namespace設定的版本是否相符
class MyClass{
public const cmd1Complete:String = "cmd1Complete";
public const cmd2Complete:String = "cmd2Complete";
public var commander:MultiCommander;
public var infoObj:Object = new Object();
public function TestMultiCommander(){
infoObj.x = 1;
commander = new MultiCommander(this);
commander.addEventListener(MultiCommander.CommandComplete, onCommandComplete);
commander.addCommand(MultiCommander.CommandStart,run1,infoObj).addCommand(cmd1Complete,run2,infoObj).execute();
}
public function run1(_info:Object):void {
_info.x++;
trace("run1 infoObj.x=",infoObj.x)
commander.dispatchComplete(cmd1Complete);
}
public function run2(_info:int):void {
_info.x++;
trace("run2 infoObj.x=",infoObj.x)
commander.dispatchComplete(cmd2Complete);
}
}
執行結果
run1 infoObj.x=2
run2 infoObj.x=3
說明
1.產生一個commander物件,並將commander所在的主程式class丟進去當參考
commander=new MultiCommander(this)
2.設定所有會觸發的事件名稱,與用來交換資訊的物件
private var Run1Complete:String="Run1Complete";
private var Run2Complete:String="Run2Complete";
public var infoObj:Object=new Object()
3.設定監聽所有指令列完成,所發出的通知
commander.addEventListener(MultiCommander.CommandComplete, onCommandComplete);
4.加入要執行的command
commander.addCommand(EventType,function,args...):MultiCommander
EventType:設定當接收到這eventType時
function:就會去執行設定的function
args:可以放所有要給function執行的參數
class MyClass{
protected var x=1
public function MyClass():void{
run1(x);
run2(x)
}
public function run1(_input:int):void{
_input++;
trace('run1=',x)
}
public function run2(_input):void{
_input++;
trace('run2=',x)
}
}
得到的結果是
run1=1
run2=1
物件傳遞
class MyClass2{
protected var infoObj:Object=new Object();
public function MyClass2():void{
infoObj.x=1;
run1(infoObj);
run2(infoObj)
}
public function run1(_info:Object):void{
_info.x++;
trace('run1=',infoObj.x)
}
public function run2(_info:Object):void{
_info.x++;
trace('run2=',infoObj.x)
}
}
var byteArray:ByteArray=JPEGEncoder.ecncode(bitmapdata)
ByteArray操作
1.如何將byteArray變成一個實體檔案
var targetFile:File =File.createTempFile();
var stream:FileStream = new FileStream();
stream.open(targetFile, FileMode.WRITE)
stream.writeBytes(byteArray, 0, 0);
stream.close();
2.如何將byteArray變成bitmapData
var bitmapData:BitmapData=new BitmapData(w,h);
bitmapData.setPixels(new Rectangle(),byteArray);