Showing posts with label MovieClip. Show all posts
Showing posts with label MovieClip. Show all posts

Saturday, August 29, 2009

ActionScript 3.0 Tutorial Slide. Hope it helps

Coding Flash : ActionScript(3.0) Tutorial

I use this slide to give an ActionScript 3.0 Tutorial in the freshman training course of Intelligent Agent Laboratory in Department of Computer Science and Information Engineering of National Taiwan University.

FYI.

Sunday, December 9, 2007

MDM + as3corelib : 存檔寫 log (文字檔 + 圖檔)

// 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" );


}

Friday, November 30, 2007