zoukankan      html  css  js  c++  java
  • C++与Flash的交互

    研究Flash嵌入游戏中的可行性.......

    • 渲染问题已解决
    • 事件响应已解决
    • 下面是C++与Flash AS的交互, 以MFC为例:

    1. 新建一个MFC Dialog程序

    2. 添加一个Flash控件

     

    3. 把Flash控件添加一个变量

     

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

     

    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++.

    这个很简单, 在flash的那个Button组件的动作中添加脚本:

     

    [javascript] view plaincopy
    1. on(click)  
    2. {  
    3.     fscommand("MsgBox""这是flash调用c++的响应");  
    4. }  

    然后在MFC中添加事件响应:

     

    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.

    首先在Flash中注册回调函数:

     

    [javascript] view plaincopy
    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++中添加调用:

     

    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++, 就可以看到效果了:

  • 相关阅读:
    React项目升级遇到的问题复盘(2019-09-02)
    前端项目升级到React-router5中遇到的问题解决方案以及思路
    三行Jquery代码实现简单的选项卡
    开放-封闭原则
    单一职责原则
    简单工厂模式(c++实现)
    博客园使用MarkDown格式记录博客
    Qml 的Image对应的source不变,但是图片内容改变却不会刷新的解决方案
    Qt中第一请求web api连接返回缓慢问题
    Qt的pro文件工程配置
  • 原文地址:https://www.cnblogs.com/lancidie/p/3384580.html
Copyright © 2011-2022 走看看