18 ตุลาคม 2553

AS3 : Stop(); และ Event.ENTERFRAME

สำหรับ Function อย่าง Stop(); หรือ gotoAndStop(เฟรมเป้าหมาย); นั้น

ไม่ใช่ว่าเมื่อเรา Stop ไว้ที่ Frame ที่กำหนดแล้ว Flash ไม่ทำการเล่นต่อ แต่เป็นการเล่นซ้ำๆ ใน Frame ที่เราทำการ Stop ไ้ว้นั้น
ดังนั้นถ้าเรามีการทำ AddEventListener(Event.ENTERFRAME, ฟังก์ชั่นที่กำหนดให้เล่นทุกเฟรม); แล้ว หากเราต้องการให้ทุกอย่างหยุดลงจริงๆ
จึงจำเป็นที่จะต้องทำการ RemoveEventListener(Event.ENTERFRAME, ฟังก์ชั่นที่กำหนดให้เล่นทุกเฟรม); นั้นด้วยจึงจะสมบูรณ์

ข้อที่ควรระวัง
Event อย่าง Event.ENTERFRAME นั้นจะทำงานทันทีที่เข้าสู่ Frame นั้นๆ ซึ่งรวมถึงทำงานก่อนการทำงาน ActionScript ที่เขียนไว้ใน Frame นั้นๆ ด้วย
ดังนั้นบางครั้งอาจเกิดการทำงานที่เกินกว่าที่ต้องการได้ หากจัดจังหวะการเล่น Frame ไม่ดี

17 ตุลาคม 2553

AS3 : การใช้ for in ในการเรียกข้อมูลจาก Array

แนวทางการเขียน

for(var s:String in myArray){

//todo…

}

ตัวอย่าง // การเพิ่มค่าใน Array แบบที่ 1
var arrayData:Array = new Array("Silver","Gold","Iron");

// การเพิ่มค่าใน Array แบบที่ 2
arrayData['a1'] = "XX_1";
arrayData['a2'] = "XX_2";

// การเพิ่มค่าใน Array แบบที่ 3
arrayData.a3 = "XX_3";
arrayData.a4 = "XX_4";

// การเพิ่มค่าใน Array แบบที่ 4
arrayData.push("XX_a!");
arrayData.push("XX_b!");

for(var sIndex:String in arrayData)
{ trace(sIndex + " = " + arrayData[sIndex]); }

การใช้งาน
1. ใช้สำหรับดึงข้อมูลใน Array ที่เราไม่ทราบโครงสร้างข้อมูลภายใน
2. เมื่อเราต้องการทราบชื่อ Index ที่ใช้กำกับ Data ใน Array ด้วย
3. เมื่อเราต้องการแสดงข้อมุลทั้งหมดใน Array ที่มี Index เป็น String

อ้างอิง
1. Flash AS3.0 Tip: For Loop แบบต่างๆ / for, for in, for each in

คำที่เกี่ยวข้อง : การวนลูปเรียกข้อมูล, การดึงข้อมูลจาก Array, การค้นหาข้อมูลใน Array

AS3 & XML : บทความน่าสนใจจากที่อื่นๆ [1]

Flash ActionScript 3.0
1. ActionScript 3 ตอน 1
2. การเก็บข้อมูลและเรียกข้อมูลในflash / SharedObject
3. การสร้าง Animaition แบบ Layer Mask
4. Classes :: ActionScript 3.0 Reference for the Adobe Flash Platform
5. How to make flash games – Flash game dev 101

XML
1. ฟันธงโหลดภาษาไทยใน XML ด้วย AS3 จาก ServerSide

FaceBook
1. Levelup.in.th
2. Developers.Facebook.com
3. Thinkdiff.net :: How to use dashboard api of facebook
4. Thinkdiff.net :: How to be a facebook ninja developer

16 ตุลาคม 2553

AS3 : การกำหนดค่าตัวแปร จากข้อมูลภายนอก

แนวทางการเขียน

var request:URLRequest = new URLRequest("http://www.yourserver.com/dataLayer.php");
request.method = URLRequestMethod.GET;

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(request);

function completeHandler(evt:Event) {

var username = evt.target.data.username;
var email = evt.target.data.email;

trace ('username is ' + username);

trace ('email is ' + email);

}

ข้อมูลภายใน
File "data01.txt"
gender=male&age=27&name=Master
ตัวอย่าง var myLoader:URLLoader = new URLLoader();
myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
myLoader.addEventListener(Event.COMPLETE, onDataLoad);
myLoader.load(new URLRequest("data01.txt"));

function onDataLoad(e:Event)
{
// การเรียกข้อมูลแบบที่ 1
var ageData:uint = myLoader.data['age'];

// การเรียกข้อมูลแบบที่ 2
var genderData:String = myLoader.data.gender;

trace("1. Age = " + ageData + " / Gender = " + genderData);

// การเรียกข้อมูลแบบที่ 3
var myData = myLoader.data;

trace("2. Age = " + myData['age'] +
" / Gender = " + myData.gender);
}

การใช้งาน
เมื่อเราจำเป็นต้องเรียกใช้ข้อมูลจาก PHP หรือ MySql ให้เข้ามาทำงานใน Flash โดย ActionScript 3 (AS3) โดยเราต้องการเรียกใช้ข้อมูลจำนวนไม่มากนัก และไม่ต้องการให้เกิดความยุ่งยากในการพัฒนาโปรแกรม

อ้างอิง
1. Using ActionScript 3.0 with PHP Part 1: Loading External Variables
2. Adobe.com : Working with external data
3. Loading Dynamic Data into Flash using AS3

คำที่เกี่ยวข้อง : การเรียกข้อมูลจากภายนอก, การทำงานกับข้อมูลภายนอก, การโหลดข้อมูลจาก PHP

AS3 : การเรียก Class ด้วย Class Name

แนวทางการเขียน

var ClassReference:Class = getDefinitionByName("ชื่อคลาส") as Class;
var s:String = (new ClassReference("ค่าเริ่มต้นของคลาส") as String);
trace(s);


ตัวอย่างvar ClassRef:Class = getDefinitionByName("mc001") as Class;
var mc:MovieClip = new ClassRef() as MovieClip;
ผลที่ได้จะเหมือนกับ

var mc:MovieClip = new mc001();


การใช้งาน
เราอาจจะเรียกใช้ในกรณีที่มีการเก็บ Class ของ MovieClip ไว้ใน Library จำนวนมาก และต้องการเรียกใช้เพื่อแสดงผลตามลำดับ ซึ่งอาจรวมไปถึงการรับค่าจากภายนอก เพื่อเรียกใช้ Class ต่างๆ ไม่ว่าจะเป็น PHP,MySql หรืออื่นๆ

อ้างอิง
1. ActionScript 3 : Get a Class Reference by Class Name
2. Adobe.com : getDefinitionByName
3. เราจะดึง movieclip ที่อยู่ใน Array ออกมาใช้ยังไงคะ

คำที่เกี่ยวข้อง : การเรียกคลาสด้วยชื่อคลาส / Get a Class Reference by Class Name, การเรียกคลาสเป้าหมาย / Calling Target Class, การเปลียน String เป็น Class / Change String to Class