การอ่านค่า FlashVars บน Flex 4
วันที่ 18 ต.ค. 53 + 00:00.00 , กลุ่ม Flash & Flex , ป้าย flashvar, flex
หากต้องการส่งค่าต่างๆ จากภายนอกให้เข้าไปในไฟล์ Flash ที่สร้างด้วย Flex 4 นั้นโดยหลักการแล้ว เราต้องใช้ FlashVars ซึ่งเป็นพื้นฐานของการผ่านค่าเข้าไปใน ไฟล์ Flash
1. ทำไมกันวะ ถึงทำแบบ Flash ไม่ได้
คือเริ่มต้น ถ้าจะใช้ FlashVars เราก็มีหลายๆ วิธีที่ได้ลองหาๆ มา ตัวอย่างเช่น
ปัญหาใหญ่ที่เจอคือ ไอ้ this.root มีค่าเป็น null (อ่านว่า เน่า และแปลว่า เน่า) ลองแล้วลองอีก ก็ไม่สามารถทำให้ไอ้สิ่งนี้หายเน่าได้ ไม่รู้เพราะสากกระเบืออะไร
2. จากนั้นลองพยายาม ลองใหม่
ด้วยการเขียนด้วยโค้ด Action Script เพียวๆ (ก็คือ ไม่ใช้งาน Flex แล้ว) ด้วยตัวอย่างแบบนี้ (พอดีได้ตัวอย่าง Source code ใหม่มาน่ะ เลยลองดูหน่อย)
เฮ้ย แม่งออกว่ะ !!
3. จากนั้นเลย ลอกๆ ตามตัวอย่าง มาใส่ Flex ใหม่อีกที
เพราะมันมีส่วนต่าง กันอยู่บ้างเล็กน้อย ... แต่ปรากฏว่า เน่าเหมือนเดิมครับ
4. สรุปได้ว่าอ่านค่า FlashVars ด้วย Flex ไม่เหมือนวิธีปกติ
คงต้องหาวิธ๊ใหม่ ค้นๆ อยู่ซักพัก ก็ไปเจอ ว่าให้ใช้
เฮ้ย!! มึงจะง่ายเกินไปมั้ยวะ ? เลยจัดแจง ทดลองดู ... โอ้ววว อ่านค่าได้แล้ว นี่ไปอ้อมโลกไหนอยู่ตั้งนานวะเนี่ย ค่าที่ได้จาก this.parameters จะเป็น object เลย ถ้าเราเว็บ FlashVars มาด้วยชื่อ myVar เราก็ get ค่าได้ด้วย this.parameters.myVar ทันที
5. แสงสว่าง
http://blog.flexexamples.com/2009/03/04/grabbing-flashvars-from-the-embedding-html-template-in-flex-gumbo-swfobject-edition/
1. ทำไมกันวะ ถึงทำแบบ Flash ไม่ได้
คือเริ่มต้น ถ้าจะใช้ FlashVars เราก็มีหลายๆ วิธีที่ได้ลองหาๆ มา ตัวอย่างเช่น
public function initialize():void
{
var flashvars:Object = this.root.loaderInfo.parameters;
}ปัญหาใหญ่ที่เจอคือ ไอ้ this.root มีค่าเป็น null (อ่านว่า เน่า และแปลว่า เน่า) ลองแล้วลองอีก ก็ไม่สามารถทำให้ไอ้สิ่งนี้หายเน่าได้ ไม่รู้เพราะสากกระเบืออะไร
2. จากนั้นลองพยายาม ลองใหม่
ด้วยการเขียนด้วยโค้ด Action Script เพียวๆ (ก็คือ ไม่ใช้งาน Flex แล้ว) ด้วยตัวอย่างแบบนี้ (พอดีได้ตัวอย่าง Source code ใหม่มาน่ะ เลยลองดูหน่อย)
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
/**
* ...
* @author srs
*/
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var flashVars:Object = loaderInfo.parameters;
trace(flashVars.myVar);
var tf:TextField = new TextField();
tf.text = flashVars.myVar || "flashvars not read";
addChild(tf);
}
}
}เฮ้ย แม่งออกว่ะ !!
3. จากนั้นเลย ลอกๆ ตามตัวอย่าง มาใส่ Flex ใหม่อีกที
เพราะมันมีส่วนต่าง กันอยู่บ้างเล็กน้อย ... แต่ปรากฏว่า เน่าเหมือนเดิมครับ
4. สรุปได้ว่าอ่านค่า FlashVars ด้วย Flex ไม่เหมือนวิธีปกติ
คงต้องหาวิธ๊ใหม่ ค้นๆ อยู่ซักพัก ก็ไปเจอ ว่าให้ใช้
this.parameters
เฮ้ย!! มึงจะง่ายเกินไปมั้ยวะ ? เลยจัดแจง ทดลองดู ... โอ้ววว อ่านค่าได้แล้ว นี่ไปอ้อมโลกไหนอยู่ตั้งนานวะเนี่ย ค่าที่ได้จาก this.parameters จะเป็น object เลย ถ้าเราเว็บ FlashVars มาด้วยชื่อ myVar เราก็ get ค่าได้ด้วย this.parameters.myVar ทันที
5. แสงสว่าง
http://blog.flexexamples.com/2009/03/04/grabbing-flashvars-from-the-embedding-html-template-in-flex-gumbo-swfobject-edition/

ไม่สามารถแสดงความคิดเห็นได้ จำเป็นต้อง เข้าระบบสมาชิก ก่อน หรือ สมัครสมาชิกใหม่