// MDM Version (http://www.multidmedia.com/)
// encoder from as3corelib (http://code.google.com/p/as3corelib/)
/*
如果你要它存 PNG 結果掛掉的話,有可能是因為 轉成 png 以後太大了
(記憶體佔用太多,血淋淋的經驗,死的不明不白,完全看不出來為什麼4 張只存了一張以後好像就沒動靜了)
可以先改用 JPG 存檔並調整他的壓縮比例 JPGEncoder(60),這樣存的檔案體積會比較小,比較不容易掛
*/
import mdm.*;
import com.adobe.images.PNGEncoder;
import com.adobe.images.JPGEncoder;
//Declare global variables
var fileFolderPath:String; // 資料夾的位置
var fileName:String; // 文字檔(log)檔名
var uniqueName:String;
// 用 Flash CS3 的話一定要先用這個指令來 Initiate
mdm.Application.init(this,OnInit);
// 可接收關掉程式時的 Event
mdm.Application.enableExitHandler();
function OnInit():void {
OpenFile();
}
function OpenFile() {
var myDate:Date = new Date();
var folderExists:Boolean;
uniqueName = myDate.toDateString() + " - "
+ myDate.hours
+"_" + myDate.minutes
+"_" + myDate.seconds ;
fileFolderPath = mdm.System.Paths.desktop + "Record-" + uniqueName + "\\";
folderExists = mdm.FileSystem.folderExists(fileFolderPath);
if( folderExists == true ){
; // 資料夾已經存在
}
else{
// 資料夾不存在就create一個
mdm.FileSystem.makeFolderUnicode(fileFolderPath);
}
// log 檔名
fileName = "Log.txt";
// 在第一行寫入試著在第一行寫入 "#Log\n"
mdm.FileSystem.saveFileUnicode(fileFolderPath + fileName, "#Log\n");
}
// 要寫 log 的時候就把 string pass 給 WriteLog(your_string)
function WriteLog(msg:String) {
appendFile(msg);
}
function appendFile(eMsg:String) {
mdm.FileSystem.appendFileUnicode(fileFolderPath + fileName, eMsg);
}
// 回傳畫著這個 MovieClip 的 BitmapData
function mc2Bitmap(mc1:MovieClip):BitmapData {
var myBitmap:BitmapData = new BitmapData(mc1.width, mc1.height, true, 0);
myBitmap.draw(mc1);
return myBitmap;
}
// 將 MovieClip 轉成 名為 fileName.png 的 PNG 圖檔
function MovieClipToPNG( target_mc:MovieClip, fileName:String):void {
BitmapDataToPNG( mc2Bitmap(target_mc) , fileName );
}
// 將 MovieClip 轉成 名為 fileName.jpg 的 JPG 圖檔
function MovieClipToJPG( target_mc:MovieClip, fileName:String):void {
BitmapDataToJPG( mc2Bitmap(target_mc) , fileName );
}
// 將 BitmapData 轉成 名為 fileName.png 的 PNG 圖檔
function BitmapDataToPNG( targetB:BitmapData, fileName:String ):void {
var baString:String;
var bpd:BitmapData = targetB;
var ba:ByteArray;
var resultString:String;
ba = PNGEncoder.encode(bpd);
var g:Number;
g = 0;
resultString = ba[0];
// MDM 的存檔格式(由 | 分隔)
for (g = 1; g < ba.length; g++) {
resultString += "|" + ba[g];
}
mdm.FileSystem.BinaryFile.setData (resultString);
mdm.FileSystem.BinaryFile.writeData( root["fileFolderPath"] + fileName + ".png" );
}
// 將 BitmapData 轉成 名為 fileName.jpg 的 JPG 圖檔
function BitmapDataToJPG( targetB:BitmapData, fileName:String ):void {
var baString:String;
var bpd:BitmapData = targetB;
var ba:ByteArray;
var resultString:String;
var jpgEncorder:JPGEncoder = new JPGEncoder(60);
ba = jpgEncorder.encode (bpd);
var g:Number;
g = 0;
resultString = ba[0];
// MDM 的存檔格式(由 | 分隔)
for (g = 1; g < ba.length; g++) {
resultString += "|" + ba[g];
}
mdm.FileSystem.BinaryFile.setData(resultString);
mdm.FileSystem.BinaryFile.writeData( root["fileFolderPath"] + fileName + ".jpg" );
}
1 comment:
你好,我的问题是保存的这种binaryfile如何读取并还原呢?thanks
Post a Comment