<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://students.netindonesia.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jeffrey Hermanto Halimsetiawan&amp;#39;s Blog : Flash</title><link>http://students.netindonesia.net/blogs/jeffrey/archive/tags/Flash/default.aspx</link><description>Tags: Flash</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>Aplikasi Flash dengan Microsoft Multipoint Mouse SDK 1.1</title><link>http://students.netindonesia.net/blogs/jeffrey/archive/2010/08/14/aplikasi-flash-dengan-microsoft-multipoint-mouse-sdk-1-1.aspx</link><pubDate>Sat, 14 Aug 2010 16:47:00 GMT</pubDate><guid isPermaLink="false">74ee95c3-1e14-4b58-b312-11853d3fd7bd:246</guid><dc:creator>jeffrey</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://students.netindonesia.net/blogs/jeffrey/rsscomments.aspx?PostID=246</wfw:commentRss><comments>http://students.netindonesia.net/blogs/jeffrey/archive/2010/08/14/aplikasi-flash-dengan-microsoft-multipoint-mouse-sdk-1-1.aspx#comments</comments><description>&lt;p&gt;Integrasi antara Flash dengan Multipoint SDK dapat dilakukan dengan meng-&lt;i&gt;embed&lt;/i&gt; Flash Content pada Visual C# Application.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;img src="http://students.netindonesia.net/blogs/jeffrey/FlashMultipointArrangement.png" title="Flash Multipoint WPF Arrangement" alt="Flash Multipoint WPF Arrangement" align="baseline" height="200" width="350" /&gt;&lt;/p&gt;

&lt;p&gt;Secara garis besar susunannya adalah sebagai berikut :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flash content (AxShockwaveFlash) di-&lt;i&gt;embed &lt;/i&gt;pada sebuah User Control, yang diberi nama FlashUserControl&lt;/li&gt;

&lt;li&gt;FlashUserControl akan diletakkan pada WindowsFormHost&lt;/li&gt;

&lt;li&gt;WindowsFormHost diletakkan pada Grid&lt;/li&gt;

&lt;li&gt;MultiPointButton transparan diletakkan pada Grid, di depan WindowsFormHost yang berfungsi untuk menangkap segala MultiPoint &lt;i&gt;events &lt;/i&gt;&lt;br /&gt;&lt;/li&gt;

&lt;li&gt;Grid diletakkan pada WPF Window &lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nah, bagaimana cara untuk mengkomunikasikan MultiPoint &lt;i&gt;events&lt;/i&gt; yang ditangkap oleh MultiPointButton ke aplikasi Flash? Aplikasi C# akan berkomunikasi menggunakan CallFunction API dari kelas ExternalInterface yang disediakan oleh Adobe Shockwave Flash OCX, sedangkan request dari aplikasi Flash ke aplikasi C# ditangani dengan men-&lt;i&gt;subscrib&lt;/i&gt;e FlashCall &lt;i&gt;events &lt;/i&gt;dari Shocwave Flash OCX.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;img src="http://students.netindonesia.net/blogs/jeffrey/FlashMultipointArchitectureDiagram.png" title="Flash Multipoint Architecture Diagram" alt="Flash Multipoint Architecture Diagram" align="absmiddle" height="200" width="360" /&gt;&lt;/p&gt;

&lt;p&gt;Langkah-langkah yang harus dilakukan berikutnya adalah :&lt;/p&gt;

&lt;p&gt;1. Load Flash file pada saat event window_Loaded&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;flashUC.LoadMovie(0, path + &lt;span class="str"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + flashFileName);&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;2. Mengirimkan MultiPoint &lt;i&gt;events&lt;/i&gt; dari C# ke Flash&lt;/p&gt;

&lt;pre style="font-family:arial;font-size:12px;width:99%;height:auto;overflow:auto;padding:0px;text-align:left;line-height:20px;"&gt;&lt;code style="word-wrap:normal;"&gt; private void MultiPointTestButton_MultiPointMouseLeftButtonUpEvent(object sender, RoutedEventArgs e)  &lt;br /&gt; {  &lt;br /&gt;   try  &lt;br /&gt;   {  &lt;br /&gt;     MultiPointButton mpb = (MultiPointButton)sender;  &lt;br /&gt;     if (mpb.Content != null)  &lt;br /&gt;     {  &lt;br /&gt;       MultiPointMouseEventArgs args = (MultiPointMouseEventArgs)e;  &lt;br /&gt;       //mendapatkan mouse ID  &lt;br /&gt;       int mouseID = args.DeviceInfo.ID;  &lt;br /&gt;       //memperoleh koordinat yang di-click oleh mouse ID tersebut  &lt;br /&gt;       Point pos = ((MultiPointMouseDevice)((DeviceInfo)(MultiPointSDK.Instance.MouseDeviceList[mouseID])).DeviceVisual).GetPosition();  &lt;br /&gt;       int x = (int)pos.X;  &lt;br /&gt;       int y = (int)pos.Y;  &lt;br /&gt;       //memberikan informasi ke flash bahwa telah terjadi mouse click  &lt;br /&gt;       flashUC.HandleMouseLeftButtonUp(x, y, mouseID.ToString(CultureInfo.InvariantCulture));  &lt;br /&gt;     }  &lt;br /&gt;   }  &lt;br /&gt; }  &lt;br /&gt; public void HandleMouseLeftButtonUp(int coordinateX, int coordinateY, string mouseDeviceInfo)  &lt;br /&gt; {  &lt;br /&gt;   this.Flash.CallFunction(&amp;quot;&amp;lt;invoke name=\&amp;quot;HandleMouseLeftButtonUp\&amp;quot; returntype=\&amp;quot;xml\&amp;quot;&amp;gt;&amp;lt;arguments&amp;gt;&amp;lt;number&amp;gt;&amp;quot; + coordinateX + &amp;quot;&amp;lt;/number&amp;gt;&amp;lt;number&amp;gt;&amp;quot; + coordinateY + &amp;quot;&amp;lt;/number&amp;gt;&amp;lt;string&amp;gt;&amp;quot; + mouseDeviceInfo + &amp;quot;&amp;lt;/string&amp;gt;&amp;lt;/arguments&amp;gt;&amp;lt;/invoke&amp;gt;&amp;quot;);  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;3.&amp;nbsp; Menerima MultiPoint &lt;i&gt;events&lt;/i&gt; di Flash dari C#&lt;/p&gt;

&lt;pre style="font-family:arial;font-size:12px;width:99%;height:auto;overflow:auto;padding:0px;text-align:left;line-height:20px;"&gt;&lt;code style="word-wrap:normal;"&gt; ExternalInterface.addCallback (&amp;quot;HandleMouseLeftButtonUp&amp;quot;, null, HandleMouseLeftButtonUp);  &lt;br /&gt; function HandleMouseLeftButtonUp(x:String, y:String, m:String):Void  &lt;br /&gt; {      &lt;br /&gt;   // Logic yang menangani MultiPoint events  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Secara internal,&amp;nbsp; aplikasi Flash menggunaan koordinat yang dikirimkan oleh aplikasi C# untuk mengetahui &lt;i&gt;control&lt;/i&gt; mana yang &lt;i&gt;event&lt;/i&gt; nya telah dibangkitkan oleh &lt;i&gt;mouse clicked&lt;/i&gt; tersebut dan juga mouse ID untuk mengetahui pemain mana yang melakukan &lt;i&gt;mouse clicked&lt;/i&gt; tersebut.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;PS: Berdasarkan pengalaman dalam mengembangkan sebuah Flash Multipoint Game, jika flash movie telah berhasil di-&lt;i&gt;load &lt;/i&gt;oleh aplikasi C# namun tidak dapat berjalan, silahkan unduh installer berikut : flashplayer_10_ax_debug.exe &lt;br /&gt;&lt;/p&gt;
&lt;img src="http://students.netindonesia.net/aggbug.aspx?PostID=246" width="1" height="1"&gt;</description><category domain="http://students.netindonesia.net/blogs/jeffrey/archive/tags/Multipoint/default.aspx">Multipoint</category><category domain="http://students.netindonesia.net/blogs/jeffrey/archive/tags/Flash/default.aspx">Flash</category><category domain="http://students.netindonesia.net/blogs/jeffrey/archive/tags/MSP+ITS/default.aspx">MSP ITS</category></item></channel></rss>