<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FlexBlog on HTML5, PhoneGap, and Flash Platform! &#187; Actionscript 3</title>
	<atom:link href="http://flexblog.teerasej.com/category/adobe-flash-platform/actionscript-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://flexblog.teerasej.com</link>
	<description>Consult, training, and sharing about Adobe HTML5, PhoneGap, and Flash Platform solution, by Amaround Co., Ltd., Tel: +66 (0)86 661 5058</description>
	<lastBuildDate>Sun, 06 May 2012 14:57:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>วิธีตรวจสอบว่า Starling กำลังทำงานในโหมด Software Engine หรือ GPU</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/starling/how-to-check-starling-run-on-software-engine-or-gpu/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/starling/how-to-check-starling-run-on-software-engine-or-gpu/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 05:30:00 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Starling]]></category>
		<category><![CDATA[Check]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Stage3D]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=3307</guid>
		<description><![CDATA[Starling เป็น 2D framework จาก Adobe ตัวแรกที่สร้างบนเทคโนโลยี Stage3D ที่ทำการประมวลผลภาพบน GPU ล้วนๆ แต่จะเกิดอะไรขึ้นถ้าเกิดลูกค้าคุณนำ  Application ของคุณไปรันบนเครื่องที่ไม่มี GPU? มาดูวิธีรับมือด้านในได้เลยครับ]]></description>
			<content:encoded><![CDATA[<p>Starling นั้นเป็น Official 2D framework ตัวแรกของ Adobe ที่ใช้การประมวลผลจากเทคโนโลยี Stage3D ล้วนๆ</p>
<p>(ใครอยาก<a href="http://flexblog.teerasej.com/category/adobe-flash-platform/actionscript-3/starling/">ติดตามอ่านเนื้อหาอื่นๆ ของ Starling framework ภาษาไทยได้ที่นี่</a>ครับ)</p>
<p>แต่ก็อย่างที่บอกล่ะครับ ลองคิดดู ถ้าจู่ๆ เราเอา Game หรือ Application ที่เราสร้างขึ้นด้วย Starling ไปทำงานบนอุปกรณ์ที่ไม่มี GPU! (โลกนี้ยังมีเครื่องที่ไม่มีการ์ดจออยู่นะ) จะทำอย่างไร?</p>
<p>ถ้าให้ผมแนะนำ ก็คือการ &#8220;downgrade&#8221; การแสดงผลของ Flash คุณลงมาในระดับที่ software engine มันรับได้ ไม่งั้นก็รอเห็นการกระตุก กระตุ๊ก กระตุ๊ก ได้เลย!</p>
<p><strong>แต่ที่นี้จะเช็คยังไงล่ะ?​</strong></p>
<p>ให้ใช้ code ต่อไปนี้เพื่อตรวจว่า Starling Application ของคุณกำลังอยู่ในโหมดการทำงานแบบ Software Engine หรือ Stage3D ที่ใช้ GPU ประมวลผลครับ</p>
<pre class="brush: as3; title: ; notranslate">

...

if( Starling.context.driverInfo.toLowerCase().indexOf(&quot;software&quot;) == -1 )

{

// GPU แน่ๆ อัดกราฟฟิคได้เลย

}

...
</pre>
<p>เท่านี้คุณก็สามารถป้องกันการที่ผู้เล่นผู้ใช้ของคุณจะได้รับ User Experience ที่ไม่ดี จากการที่ Starling ไปทำงานในโหมด Software Engine แล้วครับ</p>
<p>ที่มา &#8211; <a href="http://www.adobe.com/devnet/flashplayer/articles/introducing_Starling.html">Adobe Developer Network</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/starling/how-to-check-starling-run-on-software-engine-or-gpu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starling: มารู้จัก 2D framework ที่ใช้ GPU บน Stage3D ของ Adobe Flash Player 11</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/starling/introduction-to-starling-adobe-2d-framework-built-on-stage-3d/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/starling/introduction-to-starling-adobe-2d-framework-built-on-stage-3d/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 23:15:38 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Starling]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=3106</guid>
		<description><![CDATA[จะเกิดอะไรขึ้น? เมื่อ Adobe สร้าง engine เขียนเกม 2D ใหม่หมดจดให้มาทำงานบน Stage 3D ใน Adobe Flash Player 11 และ Adobe AIR 3 ประสิทธิภาพ และความน่าประทับใจแค่ไหน ตามมาลองกับตัวเองข้างในได้เลยครับ]]></description>
			<content:encoded><![CDATA[<p>คุณกำลังสร้างเกมส์ที่เร็วกว่า ดีกว่า ตื่นตาตื่นใจกว่า ด้วย Flash เทคโนโลยีที่คุณรู้อยู่แล้วว่าต้องทำอะไรกับมันบ้าง</p>
<p>หลังจากที่ <a title="มาแล้ว!! คุณจะได้อะไรจาก Adobe Flash Player 11 และ Adobe AIR 3 ที่จะมาต้นตุลานี้" href="http://flexblog.teerasej.com/adobe-flash-platform/announcing-adobe-flash-player-11-and-adobe-air-3/">Adobe เปิดตัว Adobe Flash Player 11 และ Adobe AIR 3</a> ไป ก็มีอีกหลายๆ อย่างตามกันออกมาเป็นกุรุด ไม่ใช่แค่ตัวเอก 2 ตัวนั้น</p>
<p>หนึ่งในนั้นก็คือ Starling 2D framework ตัวแรกของโลกที่ใช้ GPU ประมวลผลล้วนๆ สนับสนุนโดย Adobe นั่นเอง</p>
<p>การเขียน code ก็ยังใช้ Actionscript 3 เหมือนเดิมนะครับ <strong>ใครยังใช้ Actionscript 2 อยู่ปรับตัวกันได้แล้ว</strong></p>
<p>สิบปากว่าไม่เท่าตาเห็นมา<strong>ลองคลิกภาพดูตัวอย่าง</strong>กันด้านล่างได้เลย</p>
<div class="one_half">
<h2>Sausage</h2>
<p>ถล่มคุณด้วยพายุไส้กรอกเต็มจอ แต่เครื่องไม่หน่วง?!</p>
<p><a href="http://dl.dropbox.com/u/7009356/StarlingTests/bin-release/Startup.html"><img class="alignnone" title="Sausage Moving" src="http://www.bytearray.org/wp-content/uploads/2011/09/sausages-moving-300x225.png" alt="" width="300" height="225" /></a></div>
<div class="one_half last">
<h2>Physic with Box2D</h2>
<p>ลองระบบ Physic โดยเชื่อมกับ Box2D ที่ทุกคนรู้จักกันดี</p>
<p><a href="http://dl.dropbox.com/u/7009356/StarlingTests/physics2/bin-release/Startup.html"><img class="alignnone" title="Starling Physic with Box2D" src="http://www.bytearray.org/wp-content/uploads/2011/09/physics-starling-300x225.png" alt="" width="300" height="225" /></a></div>
<div class="clearboth"></div>
<div class="one_half">
<h2>Particles</h2>
<p>กด right key เพื่อเริ่มและเปลี่ยนรูปแบบของ Particle</p>
<p><a href="http://dl.dropbox.com/u/7009356/StarlingTests/Starling-Tests3/Startup.html"><img class="alignnone" title="Starling Particle Demo" src="http://www.bytearray.org/wp-content/uploads/2011/09/particles-2-300x176.png" alt="" width="300" height="176" /></a></div>
<div class="one_half last">
<h2>Movie Clip</h2>
<p>ลองหนักหน่อย ใช้ Movie Clip ด้วย</p>
<p><a href="http://dl.dropbox.com/u/7009356/StarlingTests/sausage-kong/bin-release/Startup.html"><img class="alignnone" title="Sausage Kong" src="http://www.bytearray.org/wp-content/uploads/2011/09/sausage-kong1-300x176.png" alt="" width="300" height="176" /></a></div>
<div class="clearboth"></div>
<p>ใครสนใจอยากเข้าไปลองก็สามารถ download และศึกษาวิธีการใช้งานได้จาก <a href="http://www.starling-framework.org/">http://www.starling-framework.org/</a> ครับ</p>
<p>แล้ววิธีการเริ่มต้นใช้งานจะอัพเป็น video อีกทีนะครับ คอยติดตามใน <a href="http://www.facebook.com/flexblog">Fan Page</a> และ <a href="http://www.twitter.com/teerasej">Twitter</a> ได้เลย</p>
<p>อ้อคุณต้องลง Flash Player 11 ก่อนด้วยนะครับ ตอนนี้มีให้ download เป็น<a href="http://labs.adobe.com/downloads/flashplayer11.html">เวอร์ชั่น RC1 ใน Adobe Labs คลิก download จากที่นี่ได้</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/starling/introduction-to-starling-adobe-2d-framework-built-on-stage-3d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>หาทางใหม่!! Google หยุดพัฒนา Google Map Flash API แล้ว จะมีอะไรมาแทนได้บ้าง?</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/alternative-api-after-google-stop-develop-on-google-map-flash-api/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/alternative-api-after-google-stop-develop-on-google-map-flash-api/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 14:42:25 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Map]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=2689</guid>
		<description><![CDATA[ข่าว Google ประกาศหยุดพัฒนา Flash API สำหรับ Google Map อาจจะทำให้หัวใจคุณสั่นไหว แต่มาติดตามความจริง รวมถึงวิธีอื่นๆ ในการใช้ Map API กับ Flash App ของคุณดีกว่า]]></description>
			<content:encoded><![CDATA[<h3>Flash API สำหรับ Google Map ใช้งานไม่ได้แล้วอย่างนั้นหรือ?!</h3>
<p>น่าจะเป็นคำถามแรกๆ หลังจากที่คุณทราบข่าวว่า <a href="http://www.blognone.com/news/26105/%E0%B8%A5%E0%B8%B2%E0%B8%81%E0%B9%88%E0%B8%AD%E0%B8%99-google-desktop-google-pack-google-notebook-aardvark-fast-flip">Google ได้ประกาศหยุดพัฒนา Service หลายๆ ตัว</a> ซึ่งหนึ่งในนั้นก็คือ <a href="http://code.google.com/apis/maps/documentation/flash/">Google Map Flash API </a>ที่นัก Flash developer หลายๆ คนใช้มันขายเป็น feature มานักต่อนัก</p>
<p><strong>ขอตอบทุบโต๊ะตรงนี้ว่า &#8220;ยังใช้งานได้คร้าบ&#8221;</strong></p>
<p>แต่ถ้าจะเป็นเรื่อง feature ใหม่ๆ ที่จะใส่เพิ่มมาในตัว Google Map ในอนาคต Flash API คงจะไม่สามารถเข้าถึงได้ แต่การใช้เวอร์ชั่นพัฒนาล่าสุดของ Google Map Flash API ก็จะยังสามารถดึงข้อมูลจาก Google Map ได้โดยตรงอยู่นะ แค่ Google เขา &#8220;หยุดพัฒนา API&#8221; เท่านั้น ไม่ได้ปิด Service</p>
<p>อย่ากรี๊ดโลกแตกไปครับ</p>
<h2>ทางเลือกอื่นล่ะ?</h2>
<p>จริงๆ Map API บน Internet นั้นมีเยอะมากมายให้เลือกมากกว่า Google Map API อีกนะลองดูรายการที่ผมนำมาไว้ข้างล่างนี้ได้ครับ (<a href="http://polygeek.com/4613_actionscript3_mapping-api-adobe-flash-platform">ที่มาดูได้จากที่นี่</a>)</p>
<ul>
<li><a href="http://help.arcgis.com/en/webapi/flex/index.html">ESRI</a> หนึ่งใน Map API ที่แข็งแกร่งมาก เปิดให้ฟรีสำหรับทดลองใช้, เพื่อการศึกษา, และการใช้แบบ non-profit</li>
<li><a href="http://developer.mapquest.com/web/products/featured/as3-flex-flash">MapQuest</a></li>
<li>​<a href="http://openscales.org/downloads/index.html">OpenScale</a></li>
<li><a href="http://code.google.com/p/modestmaps/">ModestMap</a></li>
</ul>
<p>อย่างที่บอก <strong>Google ยังเปิดให้บริการข้อมูลสำหรับ Flash API อยู่ แค่ไม่พัฒนาต่อเท่านั้น โปรดฟังอีกครั้ง!!</strong></p>
<p>แล้วคุณคิดว่าข่าวนี้มีผลอย่างไรต่ออาชีพและแนวทางของคุณบ้าง Share ด้านล่างได้เลยครับ! <img src='http://flexblog.teerasej.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/alternative-api-after-google-stop-develop-on-google-map-flash-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 ข้อดี เมื่อใช้ Object Oriented Programming กับ Adobe Flex และ Actionscript 3</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/adobe-flex-framework/3-profit-when-apply-object-oriented-programming-with-adobe-flex-and-actionscript-3/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/adobe-flex-framework/3-profit-when-apply-object-oriented-programming-with-adobe-flex-and-actionscript-3/#comments</comments>
		<pubDate>Sun, 10 Jul 2011 01:58:10 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Architect]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Object-Oriented Programming]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://webflex.wordpress.com/?p=27</guid>
		<description><![CDATA[จะสร้างบ้าน ยังต้องมี "แบบแปลน" จะประสาอะไรกับการออกแบบระบบ Computer Program หรือ Application ที่สามารถรองรับการทำงานได้หลายๆ อย่าง มันก็ต้องมีการออกแบบที่ดีเหมือนกัน!! วันนี้มาลองอ่านว่า Object Oriented Programming หรือที่เขาเรียก OOP กันทั่วบ้านทั่วเมืองเนี่ย ถ้าเอามาใช้ใน Adobe Flex และ Actionscript 3 แล้ว จะมีประโยชน์ยังไงกัน]]></description>
			<content:encoded><![CDATA[<blockquote><p>เวลาที่คุณต้องการสร้างบ้านสักหลัง คุณต้องการอะไรบ้าง?</p></blockquote>
<p>แน่นอนว่าคุณต้องมีปูน ไม้ อิฐ เป็นวัสดุพื้นฐาน มีค้อน ตะปู เลื่อย ที่โม่ปูนเป็นเครื่องมืออำนวยความสะดวก</p>
<p>และคุณก็รู้ดีว่า ถ้าสร้างเพิงไม้เล็กๆ สักอัน ก็คงไม่ต้องการแผนการหรือวางโครงสร้างอะไรมากมาย แป๊ปเดียวก็เสร็จ</p>
<p>แต่ถ้าเกิดคุณต้องสร้างตึกหรืออาคารสักหลัง ต้องมีการวางระบบแอร์ มีที่จอดรถ มีลิฟต์ขนส่ง</p>
<p><strong>มันก็ต้องมีการวางแผนที่ดี มีการออกแบบที่ดีจริงไหมครับ?</strong></p>
<p>ตรงนี้แหละครับ คุณคงรู้แล้วว่าคุณต้อง<strong> &#8220;ออกแบบ&#8221;</strong> โครงสร้างของระบบของคุณ (หรือ &#8220;พิมพ์เขียว&#8221; หรือ &#8220;แบบแปลน&#8221; ก็ตามแต่ละคนจะถนัด)</p>
<h2>Object Oriented Programming คือหลักการออกแบบพิมพ์เขียวของการพัฒนา Application ให้เอื้อประโยชน์มากที่สุด</h2>
<p>การเขียนสร้าง computer program ก็เหมือนกัน ไม่ว่าคุณจะเลือกใช้อะไรก็แล้วแต่ (ไม่จำกัดเฉพาะ <a href="http://flexblog.teerasej.com/category/adobe-flash-platform/adobe-flex-framework/">Adobe Flex</a> หรือ <a href="http://flexblog.teerasej.com/category/actionscript-3/">Actionscript 3 </a>) ถ้าระบบมันเริ่มซับซ้อน มีการทำงานที่หลากหลายมากขึ้น ก็คงไม่พ้นต้องวางแผน และออกแบบระบบให้ดีๆ <strong>เพื่อที่คุณจะได้มี &#8220;แบบแปลน&#8221; ไว้เดินตาม, ไว้ใช้อธิบายเพื่อนร่วมงานของคุณ, และเพื่อให้การพัฒนาระบบขนาดใหญ่เป็นไปในทิศทางเดียวกัน ไม่มั่ว</strong></p>
<blockquote><p>ใช่แล้วครับ คุณจำเป็นต้องรู้การใช้ Object Oriented Programming (OOP)</p></blockquote>
<p>ซึ่งการพัฒนา software development นั้น ก็สามารถเทียบเคียงกับการสร้างบ้านของวิศวกรได้เลยทีเดียว แบบบ้านยิ่งซับซ้อน คุณก็ต้องยิ่งรู้ดีว่า แบบแปลนที่ชัดเจน และถูกต้องเป็นสิ่งที่จำเป็นมาก</p>
<p>ลองนึกถึงการสร้างบ้านสักหลังโดยไม่มีแบบแปลนดู &#8230;น่ากลัวใช่ไหมล่ะ มันอาจอยู่ได้ แต่ไม่คงทนถาวรแน่ๆ  (โชคดีที่ยุคนี้ คนบางกลุ่มจะเรียกบ้านประเภทนี้ว่า &#8220;สร้างสรรค์&#8221;)</p>
<p>และส่วนใหญ่ คุณก็จะถามผมว่า (ถามผมทุกคนจริงๆ)</p>
<blockquote><p>Object Oriented Programming  จะมีประโยชน์อะไรบ้างถ้าผมเอามาใช้ใน project?</p></blockquote>
<p>ผมยกตัวอย่างมาไว้ ณ ที่นี้สัก 3 อย่างก่อนแล้วกัน</p>
<h2>1. ระบบแบ่งออกเป็นสัดส่วนที่อ่าน และเข้าใจง่าย</h2>
<p>ให้นึกภาพแบบแปลนของบ้านสักหลัง มันควรที่จะมองคร่าวๆ ก็รู้ว่าตรงไหนเป็นห้องน้ำ หรือตรงไหนเป็นโรงจอดรถใช่ไหมครับ?</p>
<p>แบบเดียวกัน ถ้าคุณใช้ Object Oriented Programming ในการออกแบบหรือวางระบบ มันก็เหมือนการเขียนแบบแปลนดีๆ ขึ้นมานั่นเอง ระบบของคุณจะอ่านง่าย ดูสะอาด และคุณสามารถรู้ได้ก่อนว่าส่วนไหน หรืออะไรที่ไม่จำเป็น ก็ตัดทิ้งได้ด้วย</p>
<p>คนอื่นที่จะมาสร้างต่อจากคุณ (ตอนนี้ส่วนใหญ่ก็ 85% ของนักพัฒนาทั่วโลก) เขาก็สามารถอ่าน และเข้าใจระบบของคุณได้อย่างรวดเร็ว เพราะ OOP นี้เป็นหลักการสากล ใช้กันทั่วโลกแล้ว</p>
<p>เพื่อนร่วมทีมของคุณที่เข้าใจในระบบนี้ ก็สามารถช่วยเหลือคุณ หรือ join project ได้เร็วขึ้น เขาไม่ต้องการให้คุณมานั่งอธิบายระบบทั้งหมดอีกต่อไปแล้ว เพราะ OOP มีแบบแปลนมาตรฐาน เข้าใจง่าย แต่ก็อาจมีบางส่วนที่คุณออกแบบไว้ ที่ต้องอธิบาย (แน่นอน บ่อยครั้งที่คุณจำได้ว่า มีคนไม่เข้าใจการออกแบบอันสุดยอดของคุณเสมอ)</p>
<p><strong>ลดการเสียเวลาในระยะยาว และช่วยการสื่อสารให้เข้าใจง่ายขึ้น เร็วขึ้น (คนที่มาทำต่อก็จะไม่แอบนินทาเราลับหลังด้วย ^_^)</strong></p>
<h2>2. สามารถใช้ Code เดิมซ้ำได้ (Reusable)</h2>
<blockquote><p>รู้ไหม คุณไม่จำเป็นต้องทำงานแบบเดิมซ้ำๆ กันทุกครั้งหรอกนะ</p></blockquote>
<p>ผมจะยกตัวอย่างให้ดู</p>
<p>ใน Project สร้างบ้านหลังหนึง คุณต้องเริ่มสร้างห้องทุกห้องขึ้นมา กำแพง พื้นไม้ ทุกอย่างใช่ไหม? จากนั้นคุณก็ออกแบบบ้าน ทำมันให้เสร็จ จากนั้นคุณก็ได้งานสร้างบ้านอีกหลัง อะไรจะเกิดขึ้นต่อ?</p>
<p>&#8230;คุณก็ต้องมานั่ง<strong>ออกแบบบ้านหลังใหม่ทั้งหมด</strong>อีก ห้องทุกห้อง กำแพง พื้นไม้ อาจจะมีโรงรถด้วยครั้งนี้ และคุณก็จะต้อง<strong>ทำใหม่ทั้งหมด</strong>ในบ้านหลังต่อๆ ไปใช่ไหม?</p>
<p><strong>มาเปลี่ยนวิธีคิดกันดีกว่า <img src='http://flexblog.teerasej.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p>ถ้าคุณสังเกตให้ดี คุณจะพบว่า คุณสามารถออกแบบห้อง แต่ละห้องแยกออกจากกันได้ จากนั้นก็ค่อย &#8220;เชื่อมต่อ&#8221; ห้องแต่ละห้อง ทางเดินแต่ละส่วนเข้าเป็นบ้านหลังที่คุณต้องสร้าง</p>
<p>พอมาบ้านหลังถัดไป คุณก็จะพบว่าคุณสามรถใช้แบบห้องน้ำแบบเดิมได้ ทางเดินสามารถใช้แบบเดิมได้ อาจจะต้องสร้างโรงรถขึ้นมาใหม่เท่านั้น คราวนี้เกิดอะไรขึ้น?</p>
<p>คุณแค่เอาของที่คุณทำไว้ก่อนหน้านี้มาใช้ <strong>ไม่จำเป็นต้องมานั่งสร้างใหม่อีก!</strong></p>
<p>นี่เป็นคุณประโยชน์เดียวกันที่คุณจะได้จากการใช้หลักการ Object Oriented Programming มาออกแบบระบบของคุณ ซึ่งถ้าคุณออกแบบระบบได้ถูกต้องตามหลักการ และสามารถแบ่งระบบของคุณออกเป็น &#8220;<strong>ส่วน</strong>&#8221; หรือ &#8220;<strong>module</strong>&#8221; ระบบของคุณก็พร้อมที่จะถูก &#8220;<strong>reuse</strong>&#8221; ใช้งานได้ซ้ำแล้วซ้ำอีก</p>
<p><strong>จำไว้ คุณแค่ใช้ของเดิม ไม่ต้องมานั่งปวดหัวกับมันซ้ำแล้วซ้ำอีก</strong></p>
<h2>3. ระบบสามารถต่อยอดเพิ่มเติมได้</h2>
<p>ลองนึกว่าอาคารของคุณสามารถเติบโตขึ้นเป็นตึกระฟ้าหลายร้อยชั้นได้อย่างไร?</p>
<p>นั่นเป็นเพราะการออกแบบที่ดี ที่ทำให้อาคารหลังแรกสุดของคุณสามารถรองรับการต่อเติม และยกระดับความสามารถในอนาคตไว้ใช่ไหมครับ?</p>
<p><strong>Object Oriented Programming เป็นหลักการออกแบบที่มีวิธีพร้อมให้คุณใช้ในการออกแบบระบบของคุณ ไว้เพื่อการต่อยอดในอนาคตไว้เช่นเดียวกัน</strong></p>
<p>ซึ่งเมื่อคุณออกแบบตามหลักการที่ว่านี่แล้ว การมาปรับปรุงพัฒนาก็ไม่ใช่เรื่องที่ยากลำบากอะไรเลยครับ</p>
<h2>แล้วจะเริ่มศึกษา Object Oriented Programming อย่างไร?</h2>
<p>จริงๆ แล้วภาษา Computer Programming ในปัจจุบันนั้น ถูกออกแบบตามโครงสร้างของ Object Oriented Programming อยู่แล้ว อย่าง Java, C#.NET, PHP, และ Actionscript 3</p>
<p>ดังนั้นการที่คุณพัฒนา Application โดยใช้ภาษาพวกที่ว่านี้ คุณก็ได้เรียนรู้การพัฒนาแบบ Object Oriented Programming แล้วล่ะ</p>
<p>แต่หากพยายามเข้าใจในตัวหลักการมันจริงๆ ประโยชน์ที่ได้นี้จะเยอะขึ้นอีกมากเลยครับ</p>
<blockquote><p>หากต้องการการฝึกอบรม Object Oriented Programming training กับภาษา Adobe Flex, Actionscript 3, C#.NET, PHP, Java สามารถดูรายละเอียดได้ในส่วนของ <a href="http://flexblog.teerasej.com/training-instructor/">Training and Instructor</a> หรือ<a href="http://flexblog.teerasej.com/contact/">ติดต่อผมได้โดยตรงตามรายละเอียดในหน้า Contact</a> ครับ ^_^</p></blockquote>
<p><strong>แล้วคุณล่ะ? เคยใช้ OOP ในการพัฒนาระบบของคุณไหม? แชร์ความเห็นใน comment ด้านล่างได้นะครับ </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/adobe-flex-framework/3-profit-when-apply-object-oriented-programming-with-adobe-flex-and-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[How-to] มา sort date object ใน Actionscript 3 กันเถอะ</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/how-to-sort-date-object-in-actionscript-3/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/how-to-sort-date-object-in-actionscript-3/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 01:34:33 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Compare]]></category>
		<category><![CDATA[Date]]></category>

		<guid isPermaLink="false">http://webflex.wordpress.com/?p=26</guid>
		<description><![CDATA[การทำงานกับ date object เป็นเรื่องที่น่ามึนเป็นอย่างยิ่ง โดยเฉพาะเรื่องการ sorting ตัว Actionscript 3 Date object ยิ่งเป็นเรื่องที่น่าฉงนนัก แต่วันนี้เรามาดูกันครับว่าทำ sorting date ง่ายๆ นั้นทำกันอย่างไร ]]></description>
			<content:encoded><![CDATA[<p>ครั้งหลายครา ที่การสร้าง application ไม่ว่าจะเป็น web application หรือแม้แต่ในยุคที่ <a href="http://flexblog.teerasej.com/category/adobe-flash-platform/adobe-air/mobile-tablet/">mobile application</a> ครองเมือง การทำงานเกี่ยวกับ date และ time ก็ยังไม่จางหายไปไหน</p>
<p>เพราะมนุษย์นั้นมีความเกี่ยวข้องกับเวลานั่นเอง หลายๆ อย่างใน software program ก็ล้วนเกี่ยวข้องกับเวลาทั้งสิ้น ไม่ว่าจะตั้งแต่ภาษา Perl มาจน Ruby on Rails หรือภาษา <a href="http://flexblog.teerasej.com/category/work-with-technology/html5/">HTML</a> ไปจนถึง <a href="http://flexblog.teerasej.com/category/adobe-flash-platform/adobe-flex-framework/">Adobe Flex</a></p>
<p>เอาหล่ะ ทีนี้ถ้าเราต้องการ sorting (เรียงลำดับข้อมูลจาก<strong>มาก</strong>ไป<strong>น้อย</strong> <strong>ก่อน</strong>ไป<strong>หลัง</strong>) ค่าของ date object ล่ะจะทำยังไง??</p>
<p>มาลองดู method <a href="http://flexblog.teerasej.com/category/actionscript-3/">Actionscript 3</a> ด้านล่างนี้เลยครับ</p>
<pre class="brush: as3; title: ; notranslate">
private function dateEnteredSort(d1:Object, d2:Object):int {
   var ms1:Number = new Date(d1.date_value).getTime();
   var ms2:Number = new Date(d2.date_value).getTime();
   if (ms1 &lt; ms2) {
      return -1;
   } else if (ms1 &gt; ms2) {
      return 1;
   } else {
      return 0;
   }
}
</pre>
<h2>Explaination</h2>
<p><strong>Line 2-3:</strong> เนื่องจาก method นี้จะได้รับ object  มา 2 ตัวทุกครั้งเพื่อใช้ในการเปรียบเทียบ สมมุติในที่นี้ว่าใน d1 และ d2 นั้นมี property ที่เป็น date object อยู่ ชื่อว่า date_value ตรงนี้เราก็เอามาแปลงเป็น date object แล้วก็แปลงเป็น millisecond ซะ</p>
<p><strong>Line 4-9: </strong>จากนั้นเมื่อเราได้เวลาทั้ง 2 เป็น millisecond แล้วการเอามาเปรียบเทียบก็เลยง่ายกว่าเดิม เราก็จับมา compare ใน if..else ซะ โดยถ้า</p>
<ul>
<li>d1 เป็นวันเวลาที่เกิดก่อน d2 ก็ให้ส่งค่า -1 กลับออกไป</li>
<li>d1 เป็นวันเวลาที่เกิดหลัง d2 ก็ให้ส่งค่า 1 กลับออกไป</li>
<li>ส่งค่า 0 ออกไปถ้า d1 และ d2 เป็นช่วงเวลาเดียวกัน</li>
</ul>
<h2>Summary</h2>
<p>สรุปในที่นี้คือการทำ sorting หรือการ compare ระหว่าง date object 2 object นั้น จะสามารถทำได้ง่ายกว่ามาก ถ้าเราแปลงค่าของ date object ให้เป็นค่าของ Number (โดยการแปลงเป็น millisecond)</p>
<blockquote><p>การทำ sorting หรือการ compare ระหว่าง date object 2 object นั้น จะสามารถทำได้ง่ายกว่ามาก ถ้าเราแปลงค่าให้มันกลายเป็น millisecond ก่อน</p></blockquote>
<p>ขอบคุณครับ รักคนอ่าน</p>
<p><strong>ถ้าชอบวิธีนี้ หรือมีวิธีที่ดีกว่า comment กันด้านล่างได้เลยนะครับ ^ ^</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/how-to-sort-date-object-in-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3D!! นี่หรือคือแนวการตลาดใหม่ของ Adobe Flash Platform?</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/flash-player/is-3d-new-market-for-adobe-flash-platform/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/flash-player/is-3d-new-market-for-adobe-flash-platform/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 12:18:19 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Make it better]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Adobe Flash Player]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=1948</guid>
		<description><![CDATA[ในโลกของ Internet ด้านการทำ animation คงปฏิเสธไม่ได้ว่า Flash นั้นครองตลาดเข้าไปเต็มๆ ถึงแม้ว่าช่วงหลังๆ กระแส HTML5 เริ่มถูกพูดถึงกันมาก แต่จนถึงทุกวันนี้ HTML5 ก็ยังไม่ถึงจุดที่จะ &#8220;วิวัฒน์&#8221; โลกของ Internet ได้เต็มที่เท่าไหร่นัก ตรงนี้เป็นเพราะยังขาด &#8220;เครื่องมือ&#8221; ที่อำนวยความสะดวกในการสร้าง content ได้เท่า Flash ซึ่งก่อนจะถึงวันนั้น Flash ก็ยังเป็นเครื่องมือที่สามารถสร้างสรรค์จินตนาการบน Internet และ Website ได้เป็นอย่างดี ยิ่ง Adobe Flash Player รุ่นหลังๆ เนี่ย กิน CPU ในการประมวลผลน้อยมาก (มากจริงๆ ไม่เชื่อลองไปอัพเดตเวอร์ชั่นล่าสุดได้ที่นี่) ทีนี้ด้วยความที่ Flash มันเป็นเครื่องมือนำเสนอ content ด้วย animation ที่น่าตื่นตาตื่นใจอยู่แล้ว เขาก็พร้อมที่จะก้าวไปสู่อะไรใหม่ๆ ได้เสมอ ตั้งแต่การยกระดับ Flash ไปสู่ Social ...]]></description>
			<content:encoded><![CDATA[<p>ในโลกของ Internet ด้านการทำ animation คงปฏิเสธไม่ได้ว่า Flash นั้นครองตลาดเข้าไปเต็มๆ ถึงแม้ว่าช่วงหลังๆ กระแส HTML5 เริ่มถูกพูดถึงกันมาก</p>
<p>แต่จนถึงทุกวันนี้ HTML5 ก็ยังไม่ถึงจุดที่จะ &#8220;วิวัฒน์&#8221; โลกของ Internet ได้เต็มที่เท่าไหร่นัก ตรงนี้เป็นเพราะยังขาด &#8220;เครื่องมือ&#8221; ที่อำนวยความสะดวกในการสร้าง content ได้เท่า Flash</p>
<p>ซึ่งก่อนจะถึงวันนั้น Flash ก็ยังเป็นเครื่องมือที่สามารถสร้างสรรค์จินตนาการบน Internet และ Website ได้เป็นอย่างดี ยิ่ง Adobe Flash Player รุ่นหลังๆ เนี่ย กิน CPU ในการประมวลผลน้อยมาก (<a href="http://get.adobe.com/flashplayer/?no_redirect">มากจริงๆ ไม่เชื่อลองไปอัพเดตเวอร์ชั่นล่าสุดได้ที่นี่</a>)</p>
<p>ทีนี้ด้วยความที่ Flash มันเป็นเครื่องมือนำเสนอ content ด้วย animation ที่น่าตื่นตาตื่นใจอยู่แล้ว เขาก็พร้อมที่จะก้าวไปสู่อะไรใหม่ๆ ได้เสมอ ตั้งแต่การยกระดับ<a href="http://flexblog.teerasej.com/category/work-with-technology/facebook/"> Flash ไปสู่ Social network อย่าง Facebook</a> และ การแตกสาขาสามารถ<a href="http://flexblog.teerasej.com/category/adobe-flash-platform/adobe-air/mobile-tablet/">ทำ application บนอุปกรณ์พกพาอย่าง Smart phone หรือ Tablet</a> ก็ได้</p>
<h1>แต่ที่น่าสนใจคราวนี้ ก็คือเรื่องของ 3 มิติ</h1>
<p>ซึ่งถ้าใครได้ใช้งาน<a href="http://flexblog.teerasej.com/category/tool/adobe-flash-professional/" class="broken_link"> Adobe Flash CS5 Professional </a>หรือ <a href="http://flexblog.teerasej.com/category/actionscript-3/">Actionscript 3</a> มาบ้างแล้ว จะพบว่า Adobe ได้ใส่แกนและพิกัดเข้าไปอีกแกนหนึ่ง ทำให้วัตถุ (หรือภาพลูกบอลเด้งดึ๋งนั่นแหละ) มันสามารถ <strong>&#8220;เคลื่อนที่&#8221;</strong> ตามแนวแกน Z หรือเชิงลึกได้ และสามารถ<strong> &#8220;หมุน&#8221; </strong>รอบตัวเองได้อีกต่างหาก</p>
<p>แต่ Adobe ดูมีแนวโน้มที่จะพัฒนาแบบ &#8220;ยกระดับ&#8221; ตัว Flash Player ขึ้นไปอีกขั้น <strong>(แต่จากการที่ผมศึกษามา น่าจะเรียกว่าก้าวกระโดด จะเหมาะกว่า</strong>) ให้ Flash Player สามารถแสดงผลแบบ 3 มิติ โดยที่กินทรัพยากรเครื่องนั้นๆ ให้น้อยที่สุด</p>
<p>และอีกอย่างหนึ่งที่คิดว่าขาดไม่ได้เลย คือวิธีการที่เราจะสามารถสร้าง content (ไม่ว่าเกมส์ อนิเมชั่น หรืออะไรก็แล้วแต่) บน Flash แบบ 3 มิติ ต้องง่ายอย่างที่เป็นอยู่กับการสร้าง animation และ interactive ในชุดเครื่องมือ Adobe Flash Professional ปัจจุบัน ซึ่งน่าจะทำให้โลกของการพัฒนา content interaction ที่สวยงามเปลี่ยนโฉมหน้าไปเลยก็ว่าได้</p>
<h1>Adobe Incubator</h1>
<p>อย่างตอนนี้ Adobe ถึงกับ &#8220;แยก&#8221; การพัฒนา Adobe Flash Player ออกมาเป็นเวอร์ชั่นทดลองเต็มตัว ให้ download ไปลองความสามารถใหม่ๆ ซึ่ง Adobe เรียกเวอร์ชั่นนี้ว่า Incubator เป็นตัวแทนของ Flash Player รุ่นถัดไปอย่างแท้จริง</p>
<p>แต่ก็นั่นแหละ ยังอยู่ในช่วง Beta มีความหอมหวานแบบกุหลาบ แต่ก็เต็มไปด้วยปลายแหลม อย่าริอาจตัดสินใจเอาไปใช้ใน production (ของขายลูกค้าเชียว)</p>
<h1>Where to go from here?</h1>
<p>เอาเป็นว่าตอนนี้ &#8220;คลื่น&#8221; หลายๆ ระลอกยังอยู่ใต้น้ำอยู่ ส่วนที่ผมหยิบยกกันมาเล่าสู่กันฟังก็เป็นเพียงแค่ลูกที่มันพอโผล่พ้นน้ำมาให้เห็นกันบ้างเท่านั้น ผมรู้สึกเพียงว่า Adobe ได้จัดทัพภายในเสร็จสมบูรณ์แล้ว <a href="http://flexblog.teerasej.com/adobe-flash-platform/flash-platform-and-ios-part-2-when-apple-declare-war-to-adobe/">หลังจากที่โดนตีเข้ากลางกองหน้าเมื่อปีก่อน</a> ซึ่งกองทัพใหม่นี้น่าจะมีหัวหมู่นายกองทะลวงฟันใหม่อย่าง Digital Magazine และ HTML5 มาร่วมช่วยเหลือ Flash จนกลายเป็น 3 แม่ทัพใหญ่อย่างไม่ต้องสงสัย</p>
<p>รักคนอ่าน</p>
<p><strong>แล้วคุณคิดว่า Flash Platform จะไปในทิศทางไหนครับ? ลองแชร์ความคิดลงใน comment ด้านล่างได้เลย</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/flash-player/is-3d-new-market-for-adobe-flash-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>อย่าไปกลัว!! มารู้ 3 ไต๋ ก่อนเริ่มเรียน Actionscript 3</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/dont-fear-let-know-3-secret-before-start-learn-actionscript-3/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/dont-fear-let-know-3-secret-before-start-learn-actionscript-3/#comments</comments>
		<pubDate>Thu, 19 May 2011 02:09:23 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Starter]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=1806</guid>
		<description><![CDATA[สนใจ Flash แล้วใช่ไหมล่ะ? เห็นคนเขาเขียน Adobe AIR บน iOS ได้ง่ายๆ แล้วอยากทำมั่งใช่ไหม? แต่ยังไม่กล้าเพราะกลัวการเขียนโปรแกรมจะทำให้คุณเป็นเด็กเนิร์ดคลั่งคอมใช่ไหม? กลัวต้องอ่านตำราเล่มหนาๆ ใช่ไหม? ลองหยุดภาพลวงตาเหล่านั้น แล้วหันมามองการเขียนโปรแกรมคอมพิวเตอร์ด้วย Actionscript 3 กันเถอะ แล้วคุณจะมองมันใหม่ ไม่ยากอย่างที่คิด]]></description>
			<content:encoded><![CDATA[<div id="attachment_1822" class="wp-caption alignnone" style="width: 612px"><a href="http://flexblog.teerasej.com/wp-content/uploads/2011/05/Programming-language-is-a-chill-thing-photo-by-sakier.jpg"><img class="size-full wp-image-1822     " title="Programming language is a chill thing - photo by sakiar" src="http://flexblog.teerasej.com/wp-content/uploads/2011/05/Programming-language-is-a-chill-thing-photo-by-sakier.jpg" alt="Programming language is a chill thing - photo by sakiar" width="602" height="252" /></a>
<p class="wp-caption-text">Actionscript 3 ก็เป็นอีกภาษาหนึ่งบนโลกใบนี้ เรียนรู้และทำงานกับมันแบบชิลล์ๆ ได้เลย (photo by @sakiar)</p>
</div>
<p>Actionscript 3 สำหรับคนอย่างผมที่จบมาจากสายวิศวกรซอฟต์แวร์ ดูเหมือนจะเป็นภาษาที่ง่ายดาย เพราะมันไม่ต่างไปจาก Java หรือ C#.NET ที่เป็นภาษา OOP <strong>(หยุดตรงนี้ เราจะหยุดศัพท์เวียนหัวปวดกบาลลงแค่ตรงนี้ครับ เอาล่ะ เชิญปล่อยตัวตามสบาย และอ่านต่อได้เลย)</strong></p>
<p>แต่สำหรับคนทั่วไปอย่างคุณ ที่สนใจอยากจะลองเขียนมัน เพราะได้ไปรู้ถึง<a href="http://flexblog.teerasej.com/adobe-flash-platform/adobe-air/3-reason-why-you-have-to-migrate-to-actionscrip-3/">ความลับและประโยชน์สุดยอด</a>ที่มันสามารถนำมาให้ได้ ต้องมีความกลัวต่อการเขียนโปรแกรมอย่างแน่นอน (ผมก็เคยเป็น ก่อนหน้าที่ผมจะมาเขียนโปรแกรม ผมก็เป็นคนธรรมดาเหมือนกับคุณนี่แหละ) แต่สิ่งที่ผมเรียนรู้อย่างหนึ่งจากการใช้ชีวิตคือ</p>
<blockquote><p>พวกเราจะกลัวในสิ่งที่ไม่รู้</p></blockquote>
<p>ดังนั้นผมคิดว่า ถ้าผมช่วยบอกความลับของสิ่งที่คุณกำลังกลัว ในที่นี้คือการเขียนโปรแกรมคอมพิวเตอร์ด้วย Actionscript 3 ให้คุณพอเห็นรูปร่างหน้าตา และสิ่งที่มันเป็นอยู่ละก็ คุณจะกลัวมันน้อยลง และตัดสินใจที่จะเขียนมันได้</p>
<blockquote><p>ลองเปลี่ยนมุมมองจากภาษาคอมพิวเตอร์ ให้มองมันเป็นภาษาต่างประเทศซักภาษาหนึ่งดู อะไรๆ มันจะง่ายขึ้น  &#8211; Teerasej Jiraphatchandej</p></blockquote>
<p><strong>จุ๊ๆ แต่อย่าเอ็ดไป (กด share ได้นะ) จริงๆ แล้วเจ้าภาษา Actionscript 3 เนี่ย มันคือสิ่งที่จะ&#8230;</strong></p>
<h1>1. สั่งให้คอมพิวเตอร์ทำงานตามที่เราต้องการ!</h1>
<p>เคยสงสัยไหมครับว่าทำไมพวก Programmer หรือ Developer มันช่างดูเป็นเทพเก่งกาจ สร้างสรรค์สุดยอดเกมและ web application แสนสุดยอดมาให้พวกเราใช้งานกันได้? นั่นคือพวกเขารู้ภาษาลับครับ! ภาษาพวกนี้เหมือนภาษาอังกฤษ หรือภาษาจีนที่พวกเรารู้จัก และมีเปิดให้เรียนกันดาษดื่นทั่วไปนี่แหละ แต่พวกเราทั่วไปเรียกมันว่า &#8220;ภาษาโปรแกรม&#8221; (Programming language)</p>
<blockquote><p>พวก programmer คือคนที่เข้าใจใน &#8220;ไวยากรณ์&#8221; (grammar) และลักษณะการใช้ภาษาลับพวกนี้ ในการสั่งให้โปรแกรมคอมพิวเตอร์ทำตามที่พวกเขาต้องการ!</p></blockquote>
<p>เหมือนกับการที่เราไปเมืองจีนแล้วสั่งอาหารในร้านที่มีบ๋อยเป็นชาวจีนนี่แหละครับ ถ้าสั่งถูก พูดถูก เขียนถูก บ๋อยก็จะไปทำอาหารที่เราต้องการมาได้ถูกต้อง ถ้าผิดไป บ๋อยก็จะเอ๋อๆ ทำหน้างงๆ</p>
<p>เนี่ย แบบเดียวกับการเขียนโปรแกรมคอมพิวเตอร์เลย!</p>
<p>ดังนั้น<strong>การเริ่มเขียนโปรแกรมด้วย Actionscript 3 ก็เหมือนการเริ่มเรียนภาษาต่างประเทศใหม่ เพียงแต่คุณไม่ได้พูด แต่คุณ &#8220;เขียน&#8221; หรือ &#8220;พิมพ์&#8221; ให้คอมพิวเตอร์อ่าน แล้วมันก็จะทำตามที่คุณเขียน</strong></p>
<p>เหมือนผู้วิเศษไหมล่ะ? สั่งได้</p>
<h1>2. ทำให้คอมพิวเตอร์จะอ่านมันทีละบรรทัด!</h1>
<p>แปลกแต่จริงนะครับ เพราะหนึ่งในความลับของโปรแกรมคอมพิวเตอร์ที่ดูแสนจะอัจฉริยะ ในสายตาของเราเนี่ย&#8230;</p>
<p>คือมันทำงานตามคำสั่งที่เราเขียนให้ทีละบรรทัดครับ!</p>
<p>เวลาตอนเด็กๆ คุณอ่านเรียงความ ทีละประโยคใช่ไหมครับ?</p>
<p>หรือเวลาแสดงละครนิทาน คนอ่านบทจะบรรยายจบทีละประโยค แล้วตัวละครบนเวทีจะแสดงบทบาทตามที่ประโยคนั้นบรรยายจนจบ แล้วค่อยแสดงตามประโยคต่อไปใช่ไหม?</p>
<p>เวลาที่โปรแกรมคอมพิวเตอร์มันอ่านคำสั่งที่คุณเขียนด้วยภาษาของมันเนี่ย (คุณรู้จักในชื่อว่า &#8220;code&#8221; ถ้าเป็นคำเรียกมาตรฐานมันมีชื่อว่า statement) มันจะค่อยๆ อ่าน และทำตามคำสั่งที่ละบรรทัด</p>
<p><strong>เหมือนกันเลย!</strong></p>
<h1>3. แปลไอเดียของเรา ให้คอมพิวเตอร์เข้าใจได้ง่ายๆ !</h1>
<blockquote><p>มันมีเคล็ดลับที่จะแปลภาษาพูดของเรา ให้เป็นภาษาที่คอมพิวเตอร์เข้าใจได้ง่ายๆ &#8211; Teerasej Jiraphatchandej</p></blockquote>
<p>ผมจะบอกให้อย่างหนึง ว่าการเขียน Actionscript 3 เนี่ยมันเหมือนกับการเล่าเรื่องนิทาน หรือจำลองโลกส่วนตัวของเราเลยล่ะ</p>
<p>ถ้าผมบอกว่า &#8220;เกมส์ของผม มีม้าสีขาว มี 4 ขาซึ่งจะวิ่งไปเก็บลูกบอลที่ตกอยู่ได้&#8221;</p>
<p>มันก็ต้องหมายความว่าในเกมส์ของผมมันต้องมีม้า ใช่ไหมล่ะ? ในที่นี้คุณจะเขียนบอกให้คอมพิวเตอร์รู้ได้ยังไงว่า &#8220;เฮ้ย เกมส์นี้มีม้าแบบด้านบนนะ แกต้องมีม้าให้กับฉันอย่างนี้&#8221;? ลองอ่านผ่านๆ ข้อความด้านล่างนี้ดูนะครับ</p>
<blockquote><p>ม้า มีสี มีขา วิ่งได้ เก็บบอลได้</p></blockquote>
<p>ถ้าคุณเริ่มเขียน Actionscript 3 จริงๆ เนี่ยคุณจะเจออะไรประมาณด้านล่างนี้ (อย่าตกใจ อ่านผ่านๆ)</p>
<ul class="list1 list_color_green">
<li><strong>ม้า</strong>: เป็น <strong>Class </strong>ชื่อ Horse</li>
<li><strong>มีสี</strong>: มี <strong>property </strong>ชื่อ color</li>
<li><strong>มีขา</strong>: มี <strong>property </strong>ชื่อ leg</li>
<li><strong>วิ่งได้</strong>: มี <strong>method </strong>ชื่อ run()</li>
<li><strong>เก็บบอลได้</strong>: มี <strong>method </strong>ชื่อ pickABall( ball )</li>
</ul>
<p>ซึ่ง<strong>หลักการนี้ เหมือนกับการแปลภาษาไทยไปเป็นภาษาอังกฤษครับ มีหลักการตายตัว ในที่นี้เราแปลจากภาษามนุษย์ลงไปในโลกของเกมส์ หรือโปรแกรมคอมพิวเตอร์ </strong>โลกของการพัฒนา software computer เราเรียกมันว่า <strong>Object Oriented Programming </strong>ครับ</p>
<p>ระบบทั้งหมด (ย้ำว่าทั้งหมดจริงๆ) ของ Actionscript 3 ขึ้นตรงกับหลักการที่ว่านี้ครับ</p>
<p>ซึ่งถ้าคุณเข้าใจหลักการของมันแล้ว การพัฒนา Software ด้วย Actionscript 3 จะง่ายเหมือนคุณผ่านการเรียนภาษาอังกฤษ มาพูดกับฝรั่งยังไงยังงั้นเลย</p>
<h1>Where to go from here?</h1>
<p>เป็นไงครับ? หลังจากที่คุณเปลี่ยนมุมมองต่อภาษาโปรแกรมมิ่ง ให้เป็นภาษาต่างประเทศสักภาษาหนึ่ง มันก็ไม่มีอะไรน่ากลัวเลย มันแค่เปลี่ยนจากการเรียนรู้ภาษาเพื่อพูด มาเป็นภาษาเขียน เปลี่ยนจากการคุยกับคนต่างชาติให้รู้เรื่อง มาเป็นการเขียนคำสั่งบอกให้คอมพิวเตอร์เข้าใจและทำงานให้เราเท่านั้น ไต๋ทั้ง 3 ที่นำมาบอกให้คุณรู้ในบทความนี้ จริงๆ แล้วเป็นลักษณะอันดับต้นๆ ของภาษาโปรแกรมมิ่งเกือบทุกภาษาในปัจจุบันเลยล่ะ</p>
<p>ดังนั้นจำเอาไว้ให้ดี <strong>ถ้าคุณเข้าใจหลักการแปลภาษาของเราไปเป็นภาษาของพวกเขาแล้ว มันก็เหลือแค่ไวยากรณ์ (grammar) ที่คุณต้องทำความเข้าใจเท่านั้นแหละ</strong></p>
<p>ขอให้เริ่มต้นเรียนรู้อย่างมีความสุขครับ</p>
<p>รักคนอ่าน</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/dont-fear-let-know-3-secret-before-start-learn-actionscript-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>มาฝึกเขียน AS3 กันเถอะ!: การใช้ Timer และ TimerEvent</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/let-coding-as3-timer-and-timerevent/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/let-coding-as3-timer-and-timerevent/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 15:32:06 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=1553</guid>
		<description><![CDATA[กาลเวลาเป็นสิ่งที่ผ่านมาผ่านไป ไหลลื่นอยู่ตลอดเวลา อันเปรียบเหมือนสายน้ำไม่ไหลย้อนกลับนั่นเอง ฮ่า! แต่ว่าลูกค้าเราดันต้องการจับเจ้าเวลาให้แน่นอนเพื่อให้ Flex หรือ AIR application มันทำงานได้อย่างถูกต้องหน่ะซี่ (เอาหล่ะวา ทำไงดี) ไม่ต้องตกใจไป Actionscript 3 ของอาเฮียเขามีดี มี Timer และ TimerEvent ให้ใช้ รู้จักกับ Timer และ TimerEvent เอาเป็นว่าเรารู้จักหลักการพื้นฐานของ Actionscript 3 กันพอประมาณแล้วกันนะครับ เจ้า Timer เนี่ย มันเป็น Class ตัวหนึ่งที่สามารถ &#8220;นับ&#8221; เวลาได้ตามหน่วยเวลาในโลกมนุษย์ (มิลลิวินาที) และขณะนับเวลาไปนั้นเอง ก็จะมีการ dispatch (หรือเรียกง่ายๆ ว่า &#8220;พ่น&#8221;) event ที่ชื่อ TimerEvent ออกมาเรื่อยๆ มันจะหยุดเมื่อไหร่นั้น ก็ขึ้นอยู่กับคุณนั่นแหละ เป็นคนสั่งครับ การใช้ Timer การใช้งาน Timer ...]]></description>
			<content:encoded><![CDATA[<p>กาลเวลาเป็นสิ่งที่ผ่านมาผ่านไป ไหลลื่นอยู่ตลอดเวลา อันเปรียบเหมือนสายน้ำไม่ไหลย้อนกลับนั่นเอง ฮ่า! แต่ว่าลูกค้าเราดันต้องการจับเจ้าเวลาให้แน่นอนเพื่อให้ Flex หรือ AIR application มันทำงานได้อย่างถูกต้องหน่ะซี่ (เอาหล่ะวา ทำไงดี) ไม่ต้องตกใจไป Actionscript 3 ของอาเฮียเขามีดี มี Timer และ TimerEvent ให้ใช้</p>
<h1>รู้จักกับ Timer และ TimerEvent</h1>
<p>เอาเป็นว่าเรารู้จักหลักการพื้นฐานของ Actionscript 3 กันพอประมาณแล้วกันนะครับ เจ้า Timer เนี่ย มันเป็น Class ตัวหนึ่งที่สามารถ &#8220;นับ&#8221; เวลาได้ตามหน่วยเวลาในโลกมนุษย์ (มิลลิวินาที) และขณะนับเวลาไปนั้นเอง ก็จะมีการ dispatch (หรือเรียกง่ายๆ ว่า &#8220;พ่น&#8221;) event ที่ชื่อ TimerEvent ออกมาเรื่อยๆ มันจะหยุดเมื่อไหร่นั้น ก็ขึ้นอยู่กับคุณนั่นแหละ เป็นคนสั่งครับ</p>
<h2>การใช้ Timer</h2>
<p>การใช้งาน Timer ก็จะเหมือนการใช้งาน Class ทั่วไปครับ เราต้อง initialize ตั้งค่าก่อนที่สั่งให้มันทำงาน</p>
<pre class="brush: as3; title: ; notranslate">
timer = new Timer(1000,5);
timer.start();
</pre>
<div>โดย argument สำคัญ 2 ตัวในที่นี้ก็คือ</div>
<div>
<ol>
<li><strong>delay: เวลานับในแต่ละรอบ</strong> อย่างเช่นในตัวอย่าง คือ 1,000 มิลลิวินาที (= 1 วินาทีนั่นแหละครับ) นั่นคือในรอบที่เจ้า Timer จะนับ 1 เนี่ย มันจะรอไป 1 วินาทีแล้วค่อยนับ และรอไปอีก 1 วินาที แล้วค่อยนับ 2 ครับ</li>
<li><strong>repeatCount: จำนวนนับทั้งหมด ก่อน timer จะหยุดนั</strong>บ นั่นคือจากตัวอย่าง Timer จะนับทั้งหมด 5 รอบ รอบละ 1 วินาที ดังนั้น timer ในตัวอย่างจะนับทั้งหมด 5 วินาทีครับ (ในกรณีที่ต้องการให้มันนับไปเรื่อยๆ ให้ใส่ 0 ครับ)</li>
</ol>
</div>
<p>จากนั้นเราก็สั่งให้มันเริ่มทำงานโดยใช้ method ชื่อว่า start() ครับ จากจุดนี้ Timer ของเราจะนับไปตามกลไกที่เรากำหนดไว้ข้างบนจนหยุดครับ หรือถ้าเราต้องการให้หยุดกระทันหันก็ใช้ method ชื่อว่า stop() ได้เหมือนกัน</p>
<pre class="brush: as3; title: ; notranslate">
/*
method stop() ไว้ใช้หยุดการทำงานของ timer ชั่วคราว
และเราสามารถสั่งให้ทำงานต่อได้โดยใช้ method start() อีกครััง
*/
timer.stop();
</pre>
<h2>การดัก TimerEvent ไว้ใช้งาน</h2>
<p>แม้ว่าคุณจะสั่งให้เจ้า Timer ของคุณเริ่มเดินแล้ว แต่คุณลืมอะไรบางอย่างไปหรือเปล่า? &#8230;.. นั่นไง! คุณจะรู้ได้อย่างไรว่ามันนับในแต่ละรอบเมื่อไหร่ และมันหยุดนับหรือยัง (ในกรณีที่ repeatCount ไม่เป็น 0) ตรงนี้แหละ คุณต้องทำการดัก TimerEvent เอามาใช้งานแล้ว โดย TimerEvent มีทั้งหมด 2 ประเภทคือ</p>
<pre class="brush: as3; title: ; notranslate">

timer.addEventListener(TimerEvent.TIMER, callback );
timer.addEventListener(TimerEvent.TIMER_COMPLETE, callback);
</pre>
<h3>TimerEvent.TIMER</h3>
<p>เจ้าตัวนี้แหละที่จะถูก dispatch ออกมาในแต่ละครั้งที่มันนับครบ 1 delay ถ้าเป็น Timer ข้างบน มันก็จะ dispatch เจ้า Event ตัวนี้ออกมาทุกๆ 1 วินาที</p>
<h3>TimerEvent.TIMER_COMPLETE</h3>
<p>ส่วนเจ้านี่ก็จะถูก dispatch ออกมาในรอบสุดท้ายของการนับ ถ้ากำหนด repeatCount ไว้ 5 มันก็จะออกมารอบที่ 5 ที่แหละครับ เหมาะสำหรับไว้ทำ Loading หรือต้องคอยการคำนวนส่วนอื่นๆ ให้เสร็จ</p>
<h1>Where to go from here?</h1>
<p>เป็นไงครับ การใช้ Timer ในการจับเจ้าเวลามาใช้งานให้เกิดประโยชน์ใน Flex และ AIR application ของเรา หากประยุกต์ใช้ดีๆ มีประโยชน์มากเลยนะครับ หากคุณสนใจจะดูแนวการใช้ Actionscript 3 ในด้านต่างๆ กดปุ่มด้านล่างเลยครับ สำหรับวันนี้พอแค่นี้ก่อนครับ</p>
<p><a href="http://flexblog.teerasej.com/category/actionscript-3/" class="button medium green full"><span>ดู article อื่นๆ ที่เกี่ยวกับ Actionscript 3</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/let-coding-as3-timer-and-timerevent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 เหตุผลที่คุณต้องใช้ Actionscript 3 ให้เป็น</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/adobe-air/3-reason-why-you-have-to-migrate-to-actionscrip-3/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/adobe-air/3-reason-why-you-have-to-migrate-to-actionscrip-3/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 00:00:39 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flash Platform]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Adobe Flash Builder 4]]></category>
		<category><![CDATA[Adobe Flash Catalyst CS5]]></category>
		<category><![CDATA[Adobe Flash Professional CS5]]></category>
		<category><![CDATA[Device]]></category>
		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=1267</guid>
		<description><![CDATA["ทำไมต้องใช้ Actionscript 3?"

เป็นหนึ่งใน 10 คำถามยอดฮิต ที่สอบถามผมเข้ามาในช่วงครึ่งปีหลังของปี 2010 และยาวมาจนถึงทุกวันนี้ ซึ่งหลายๆ คนต้องการรู้คำตอบส่วนนี้มาก เพราะบางคนยังใช้ Actionscript 2 อยู่ ก็ทำงานในสายอาชีพของตัวเองได้แล้ว หรือบางคนที่มาจากภาษา platform อื่นๆ อย่าง .NET, Java, หรือ PHP ก็ยังสงสัยอยู่ว่าการที่ตัวเองจะเอาเวลาแสนสุขส่วนหนึ่งมาอุทิศให้กับการเรียนรู้ภาษาใหม่ๆ ตัวนี้]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;ทำไมต้องใช้ Actionscript 3?&#8221;</p></blockquote>
<p>เป็นหนึ่งใน 10 คำถามยอดฮิต ที่สอบถามผมเข้ามาในช่วงครึ่งปีหลังของปี 2010 และยาวมาจนถึงทุกวันนี้ ซึ่งหลายๆ คนต้องการรู้คำตอบส่วนนี้มาก เพราะบางคนยังใช้ Actionscript 2 อยู่ ก็ทำงานในสายอาชีพของตัวเองได้แล้ว หรือบางคนที่มาจากภาษา platform อื่นๆ อย่าง .NET, Java, หรือ PHP ก็ยังสงสัยอยู่ว่าการที่ตัวเองจะเอาเวลาแสนสุขส่วนหนึ่งมาอุทิศให้กับการเรียนรู้ภาษาใหม่ๆ ตัวนี้</p>
<p>วันนี้ผมเลยสรุป 3 เหตุผลหลักๆ มาให้คุณรู้เลยว่า การเรียนรู้ภาษา Actionscript 3 จะนำมาซึ่งสิ่งที่มีค่ายิ่งยวด (จริงๆ นะเออ)</p>
<h2>1. เป็นพื้นฐานต่อยอดไปสู่เทคโนโลยีระดับสูง</h2>
<p><a href="http://flexblog.teerasej.com/wp-content/uploads/2011/03/adobe-air.jpg"><img class="alignnone size-full wp-image-1271" title="adobe-air" src="http://flexblog.teerasej.com/wp-content/uploads/2011/03/adobe-air.jpg" alt="" width="600" height="400" /></a></p>
<p>เมื่อ Adobe ประกาศว่า Flash platform จะเป็นเทคโนโลยีหลักในการกระจาย content และ application ไปสู่อุปกรณ์และ platform ต่างๆ ในโลก ภาษา Actionscript 3 จึงถูกเลือกมาเป็นภาษากลางในการโปรแกรม และจัดการข้อมูลใน Flash platform ทันที สิ่งนี้หมายความว่า ถ้า Flash platform สยายปีกออกไปยังเทคโนโลยีอะไร คนที่เป็น Actionscript 3 จะสามารถเข้าถึงและใช้งานเทคโนโลยีนั้นได้ทันที ตัวอย่างที่เห็นเด่นชัดที่สุดตอนนี้คือ</p>
<ul>
<li>การพัฒนาโปรแกรมบนอุปกรณ์พกพาด้วย Adobe AIR (Mobile Application development with Adobe AIR)</li>
<li>การสร้างวัตถุเสมือนจริง (Augmented Reality หรือ AR)</li>
<li>การสร้างและควบคุมภาพ 3 มิติบน Adobe Flash (รหัสโครงการ MoleHill)</li>
</ul>
<h2>2. ทำงานร่วมกันด้วยระบบ Adobe Flash Platform</h2>
<p><a href="http://flexblog.teerasej.com/wp-content/uploads/2011/03/Adobe-Flash-platform-logo.png"><img class="alignnone size-full wp-image-1270" title="Adobe-Flash-platform-logo" src="http://flexblog.teerasej.com/wp-content/uploads/2011/03/Adobe-Flash-platform-logo.png" alt="" width="580" height="254" /></a></p>
<p>เมื่อภาษา Actionscript 3 กลายเป็นภาษากลาง มันก็เหมือนกับโลกที่ใช้ภาษาอังกฤษ หรือภาษาจีนเป็นหลักในการติดต่อค้าขาย Adobe Flash platform มีการทำงานที่เชื่อมต่อถึงกันอย่างหมดจด อย่างเช่น</p>
<ul>
<li>Adobe Flash Professional CS5 สามารถพัฒนาและส่งต่อ Animation ให้ไปใช้งานใน Adobe Flash Builder 4 ได้</li>
<li>Adobe Flash Catalyst สามารถแก้ไขงานออกแบบส่วนติดต่อผู้ใช้ (User Interface) ได้โดยไม่กระทบกับ code ที่อยู่ใน Adobe Flash Builder 4</li>
</ul>
<p>ซึ่งการทำงานร่วมกันระหว่างโปรแกรมที่อยู่ใน Adobe Flash platform ดังกล่าวนี้ ใช้ Actionscript 3 เป็นหลัก (ทั้งหมด)</p>
<h2>3. ลดความซ้ำซ้อนและขั้นตอนการทำงาน Flash project</h2>
<p><img class="alignleft size-thumbnail wp-image-1269" title="ActionScript3_Icon1" src="http://flexblog.teerasej.com/wp-content/uploads/2011/03/ActionScript3_Icon1-150x150.png" alt="" width="120" height="120" />Actionscript 3 เป็นการบูรณาการโครงสร้างและความเข้าใจของการใช้งาน Actionscript ใหม่หมดจด มีการออกแบบโครงสร้างภาษาแบบ Object Oriented Programming ซึ่งอาจจะทำให้คนที่เข้าใจใน AS2 มาก่อนมึนงงได้ แต่ถ้าเราลองเปิดใจรับ Actionscript 3 และภาษาแบบใหม่เข้ามา จะพบว่าขั้นตอนการทำงานจะเร็วขึ้นมาก ไม่มีการแก้ไข code ซ้ำซ้อน และควบคุมระบบได้มากขึ้นอย่างที่ไม่เคยมีมาก่อนนับตั้งแต่ยุคเริ่มแรกจนถึง Actionscript 2</p>
<h2>สรุป</h2>
<p>Actionscript เดินทางมาถึงยุคที่ 3 แล้ว ถ้าเป็นเทียบเป็นวิวัฒนาการของยานพาหนะ Actionscript คือเกวียน ส่วน Actionscript 3 คือรถยนต์ที่หยืดหยุ่นในการออกแบบ และทรงประสิทธิภาพสูง โดยต่อยอดโครงสร้างออกไปได้เรื่อยๆ Adobe เองก็เริ่มที่จะบังคับกลายๆ ให้ทุกคนมาใช้ Actionscript 3 โดยออกแบบเทคโนโลยีใหม่ๆ ให้ทำงานบน Actionscript 3 เท่านั้น พวกเราอย่ารอช้า เริ่มกันตั้งแต่วันนี้</p>
<blockquote><p>ก่อนจะหายไป พร้อมๆ กับยุคของ Actionscript 2 นะครับ</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/adobe-air/3-reason-why-you-have-to-migrate-to-actionscrip-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AMF (Action Message Format) คืออะไร?</title>
		<link>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/introduction-to-amf-action-message-format-in-thai/</link>
		<comments>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/introduction-to-amf-action-message-format-in-thai/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 17:30:57 +0000</pubDate>
		<dc:creator>Teerasej</dc:creator>
				<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Action Message Format]]></category>
		<category><![CDATA[AMF]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flexblog.teerasej.com/?p=1222</guid>
		<description><![CDATA[คนที่ทำงานกับ Flash หรือ Flex มาได้สักพักก็จะต้องสงสัยว่าเจ้า AMF มันคืออะไร? มีประโยชน์ยังไง? ใช้ทำอะไรได้บ้าง? จำเป็นไหม? กัน เพราะถ้าเริ่มลงลึกแล้วหัวข้อนี้มีความสำคัญต่อปากท้อง และความรื่นรมย์ในการทำงานกับสิ่งที่เรารักอยู่มากเลยล่ะครับ]]></description>
			<content:encoded><![CDATA[<p>คนที่ทำงานกับ Flash หรือ Flex มาได้สักพักก็จะต้องสงสัยว่าเจ้า AMF มันคืออะไร? มีประโยชน์ยังไง? ใช้ทำอะไรได้บ้าง? จำเป็นไหม? กัน เพราะถ้าเริ่มลงลึกแล้วหัวข้อนี้มีความสำคัญต่อปากท้อง และความรื่นรมย์ในการทำงานกับสิ่งที่เรารักอยู่มากเลยล่ะครับ</p>
<h2>AMF คืออะไร?</h2>
<p>รู้จักชื่อจริงของมันก่อน &#8220;Action Message Format&#8221; มันคือ &#8220;รูปแบบมาตรฐานในการเข้ารหัสเพื่อส่งข้อมูลระหว่าง Adobe Flash กับ Remote Service&#8221;</p>
<p>&#8230;. เอ้า งงล่ะซี่</p>
<p>มาอธิบายด้วยภาษานิทานกัน</p>
<blockquote><p>กาลครั้งหนึ่งไม่นานนัก มีเจ้าเมืองแห่งหนึ่งมีข้อมูลด้านการค้ามากมายต้องการส่งข้อมูลพวกนี้ให้เจ้าเมืองพันธมิตรในละแวกใกล้ๆ เพียงแต่ปัญหาสำคัญคือ เจ้าเมืองพวกนี้พูดกันคนละภาษา! แต่ละเมืองก็คุยกันอู้ๆ อ้าๆ บู้ๆ บ้าๆ ไปตามเมืองของตัวเอง เจ้าเมืองการค้าเลยไปจ้างนักเข้ารหัสส่งข่าว ซึ่งเชี่ยวชาญภาษาของทุกเมืองมา โดยมอบหมายให้นักเข้ารหัสคอยนำข้อความจากตนเอง นำไปถอดเป็นภาษาของเจ้าเมืองแต่ละเมือง และรับข้อความตอบกลับจากเจ้าเมืองอู้ๆ อ้าๆ พวกนั้นมาถอดเป็นภาษาของเจ้าเมืองการค้า นักเข้ารหัสส่งข่าวก็ตกลง แต่ว่ามีข้อแม้คือต้องส่งข่าวมาเป็นรหัสที่นักเข้ารหัสกำหนดเพื่อความรวดเร็ว เจ้าเมืองทั้งหมดก็ตกลง</p>
<p>เท่านี้ก็สบายแฮกันถ้วนหน้า เพราะเจ้าเมืองต่างๆ ก็ไม่ต้องไปปวดหัวพยายามพูดภาษาของเจ้าเมืองอื่นๆ ส่งข่าวคุยกัน การทำมาค้าขายก็เลยเติบโตกันมั่งคั่งทุกเมือง</p></blockquote>
<p>จบแล้วครับนิทานเรื่องนี้</p>
<p>อ้าวแล้วมันเกี่ยวอะไรกัน?</p>
<ul>
<li>เจ้าเมืองแห่งแรก คือ Adobe Flash Application นั่นเองครับ ในที่นี้คือเป็นตัวตั้ง ตัวตี เลยให้เป็นเจ้าเมืองใหญ่ซะเลย ซึ่งพวกเราก็ต้องการนำข้อมูลต่างๆ จากเจ้าเมืองนี้ไปยังเมืองอื่นๆ นั่นหล่ะ พวกเจ้าเมืองอื่นๆ คือภาษา server side ต่างๆ เช่น .NET, Java, PHP, Python, และ Ruby on Rails เป็นต้น</li>
<li>ทีนี้การที่จะให้เจ้าเมืองแต่ละคนคุยกันรู้เรื่อง ก็เลยต้องมีคนกลาง นักเข้ารหัสส่งข่าว ก็คือมาตรฐาน AMF นั่นเอง โดยที่เจ้าเมืองแต่ละเมืองที่ต้องการคุยกับเจ้าเมือง Adobe Flash รู้เรื่องต้องตกลงและนำข้อกำหนดของนักเข้ารหัส (AMF) ไปใช้ ในที่นี้คือภาษา server side แต่ละภาษาก็ต้องเอา AMF ไปทำ API ขึ้นมาพร้อมใช้งานเพื่อให้ภาษาตัวเองคุยกับ Adobe Flash ได้นั่นเองครับ</li>
</ul>
<h2>AMF มีประโยชน์ยังไง?</h2>
<p>ถ้าจะสรุปเลย เมื่อเกิดมาตรฐานกลางขึ้นมาและทุกคนทำตามมาตรฐาน สิ่งที่จะเกิดขึ้นจากการที่เราได้ใช้ AMF เป็นสื่อกลางในการแลกเปลี่ยนข้อมูลกันระหว่าง Adobe Flash และภาษา server side คือ</p>
<h3>ความเร็ว (Performance)</h3>
<p>เหมือนกับระบบรหัสไปรษณีย์ หรือบาร์โค้ด การสื่อสารจะทำได้เร็วกว่ามาตรฐานอื่นๆ อย่าง Web Service (WSDL) หรือ Restful (HTTP) เพราะเป็นมาตรฐานที่สร้างขึ้นมาเฉพาะสำหรับ Actionscript โดยตรง</p>
<h3>ความสะดวก (Automation)</h3>
<p>หากใครใช้ Adobe Flash Builder 4 ขึ้นไปจะได้เปรียบตรงนี้มากเพราะ เราสามารถใช้เครื่องมือในการเตรียมความพร้อมทำงานกับ Service ที่สร้างขึ้นโดยใช้ AMF ได้ทันที</p>
<h2>AMF จำเป็นไหม?</h2>
<p>เรียกว่าเป็นตัวเลือกดีกว่าครับ เพราะยังไงมันก็เป็นทักษะระดับที่ต้องใช้ความเข้าใจสักหน่อยในการใช้งานให้ได้มีประสิทธิภาพ ซึ่งพวกเราจะเลือกใช้การส่งข้อมูลผ่าน Web Service หรือผ่าน HTTP ก็ได้เหมือนกัน แต่ว่าความเร็วที่แตกต่างจนน่าตกใจ น่าจะเป็นจุดสำคัญที่ให้พวกเราตัดสินใจว่าจะเลือกใช้ AMF หรือเปล่า เพราะถ้าเป็นการทำงานระดับองค์กร (Enterprise) การแลกเปลี่ยนข้อมูลเป็นล้านๆ ครั้ง จะทำให้ระบบเกิดการอืดไม่น้อยเลยครับ</p>
<h2>สรุป</h2>
<p>AMF เป็นอีกช่องทางหนึ่งของการแลกเปลี่ยนข้อมูลระหว่าง Flash Application กับฝั่ง server ของคุณ จุดเด่นคือความเร็วในการแลกเปลี่ยนข้อมูลที่สูงกว่าวิธีอื่นๆ แต่ก็ต้องอาศัยความเข้าใจถ่องแท้ในการใช้ AMF แต่ละตัว ซึ่งถ้าเข้าใจหลักการใช้แล้ว AMF จะช่วยเพิ่มประสิทธิภาพในการทำงานของระบบคุณมากเลยครับ</p>
]]></content:encoded>
			<wfw:commentRss>http://flexblog.teerasej.com/adobe-flash-platform/actionscript-3/introduction-to-amf-action-message-format-in-thai/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

