zoukankan      html  css  js  c++  java
  • C# winform 与 flash as 的交互通讯

    出处:

    http://blog.csdn.net/lifesoftware/article/details/5389265

    http://www.cnblogs.com/naiking/archive/2009/01/14/1375771.html

    1、添加组件
      打开VS2008,工具-选择工具箱项-COM组件,勾选Shockwave Flash Object,确定。

    2、将Flash组件放入窗体中
      将工具箱中的Shockwave Flash Object组件拖放到窗体中,设置其属性。

    3、as代码

    import flash.external.ExternalInterface;

    //向C#发送数据
    if (ExternalInterface.available)
    {
        
    var strResult:String = ExternalInterface.call("userValidate", userid, password);
    }


    //接收C#返回的结果
    if (ExternalInterface.available)
    {
        ExternalInterface.addCallback(
    "userValidate", userValidate);
    }

    //根据C#返回的结果处理
    public function userValidate(str:String):void
    {
        trace(str);
    }

    4、c#代码

    public mainForm()
    {
        InitializeComponent();
        mainFlash.Movie 
    = Application.StartupPath + "\\swf\\DayBook.swf";//设置flash地址
        mainFlash.Menu = false;
        mainFlash.FlashCall 
    += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(mainFlash_FlashCall);
    }

    private void mainFlash_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
    {
        XmlDocument document 
    = new XmlDocument();
        document.LoadXml(e.request);
        XmlAttributeCollection attributes 
    = document.FirstChild.Attributes;

        
    // 获取函数名
        String command = attributes.Item(0).InnerText;

        
    // 获取参数
        XmlNodeList list = document.GetElementsByTagName("arguments");
        
    int count = list[0].ChildNodes.Count;//参数数量
        string[] arr_paras = new string[count];
        
    //处理参数
        for (int i = 0; i < count; ++i)
        {
            arr_paras[i] 
    = list[0].ChildNodes[i].InnerText.ToString();
        }

        
    switch (command)
        {
           
    case "userValidate":
                 userValidate(arr_paras, 
    "userValidate");
                 
    break;
           
    case "getPeopleList":
                 getPeopleList(arr_paras, 
    "getPeopleList");
                 
    break;
        
         }
    }

    //C#传给Flash的值
    private void callFunction(string funName, string arg)
    {
        
    //funName:调用as中的函数
        
    //arg:参数
        mainFlash.CallFunction("<invoke name=\"" + funName + "\" returntype=\"xml\"><arguments><string>" + arg + "</string></arguments></invoke>");
    }

    //登录验证
    public void userValidate(string[] arr_data, string functionName)
    {
        
    string password = arr_data[1];
        password 
    = OperClass.Encrypt(password, 1);
        
    string sql = "select id,username from users where state='0' and userid=" + OperClass.str(arr_data[0]) + " and password=" + OperClass.str(password);
        DataSet ds 
    = dbc.ExecuteSqlDsForAccess(sql, "info");

        
    string result = "";
        
    if (ds != null && ds.Tables["info"].Rows.Count > 0)
        {
            result 
    = ds.Tables["info"].Rows[0]["id"].ToString() + "" + ds.Tables["info"].Rows[0]["username"].ToString();
        }
        
    else
        {
            result 
    = "-1";
        }
        callFunction(functionName, result);
    }
  • 相关阅读:
    二线城市的创业人才之战
    小程序的风口到底如何?
    短视频广告一条上百万,揭秘短视频背后的故事
    让我们来看看这些企业的创始人,在互联网金融的十年里的故事
    背靠大树成为创业成功的显学
    草根站长的艰辛创业路
    互联网大佬们的创业重要选择时刻
    80后的罗敏已经在创业路上走了十几年
    CentOS7 通过 YUM 升级 VIM8
    matplotlib 画图中的basemap安装问题
  • 原文地址:https://www.cnblogs.com/flycantus/p/2151825.html
Copyright © 2011-2022 走看看