C++與Flash的交互

研究Flash嵌入遊戲中的可行性.......javascript

  • 渲染問題已解決
  • 事件響應已解決
  • 下面是C++與Flash AS的交互, 以MFC爲例:

1. 新建一個MFC Dialog程序java

2. 添加一個Flash控件c++

 

3. 把Flash控件添加一個變量web

 

4. 在OnInitDialog()中添加載.swf文件app

 

[cpp]   view plain copy
  1. // CCppFlashDlg 消息處理程序    
  2.   
  3. BOOL CCppFlashDlg::OnInitDialog()  
  4. {  
  5.     CDialog::OnInitDialog();  
  6.   
  7.     // 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動    
  8.     //  執行此操做    
  9.     SetIcon(m_hIcon, TRUE);         // 設置大圖標    
  10.     SetIcon(m_hIcon, FALSE);        // 設置小圖標    
  11.   
  12.     // TODO: 在此添加額外的初始化代碼    
  13.     this->flashUI.LoadMovie(0, "C://Documents and Settings//Administrator//My Documents//My Flash//HelloWorld.swf");  
  14.     return TRUE;  // 除非將焦點設置到控件,不然返回 TRUE    
  15. }  

 

5. 製做一個flash, 放一個Button上去, 導出一下就能夠在MFC中看到了框架

 

6. flash調用C++.ide

這個很簡單, 在flash的那個Button組件的動做中添加腳本:函數

 

[javascript]   view plain copy
  1. on(click)  
  2. {  
  3.     fscommand("MsgBox""這是flash調用c++的響應");  
  4. }  

 

而後在MFC中添加事件響應:oop

 

[cpp]   view plain copy
  1. void CCppFlashDlg::FSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)  
  2. {  
  3.     // TODO: Add your message handler code here   
  4.     if (0 == strcmp("MsgBox", command))  
  5.     {  
  6.         MessageBox(args);  
  7.     }  
  8. }  

 

7. C++調用Flash.this

首先在Flash中註冊回調函數:

 

[javascript]   view plain copy
  1. import mx.controls.Alert;  
  2. import flash.external.*;  
  3.   
  4. ExternalInterface.addCallback("MsgBox"this, MsgBox);  
  5.   
  6. function MsgBox(msg:String)  
  7. {  
  8.     Alert.show(msg, "",Alert.OK);  
  9. }  

 

而後在C++中添加調用:

 

[cpp]   view plain copy
  1. void CCppFlashDlg::OnOK()  
  2. {  
  3.     // TODO: Add your specialized code here and/or call the base class   
  4.     this->flashUI.CallFunction("/  
  5.        <invoke name=/"MsgBox/">/  
  6.            <arguments>/  
  7.                <string>這是C++調用flash的響應</string>/  
  8.            </arguments>/  
  9.        </invoke>");  
  10. }  

 

另外, 還能夠經過GetVariable()和SetVariable()來設置flash中定義的變量

 

8. 導出一下flash, 編譯一下C++, 就能夠看到效果了:

相關文章
相關標籤/搜索