• C#中JS和Flash中AS 3.0通信交互


    工作上用到C#和Flash通信交互,C#用到JS类库,Flash用到AS3.0类库。根据实现过程进行一下总结:

    首先引用swfobject.js类(下载链接:https://files.cnblogs.com/files/wxylovejx/swfobject.zip),进行加载Flash。

    方法如下:

    ------------------------用swfobject.js加载flash----------------------

    var flashvars = {
    };
    var params = {
    menu: "false",
    scale: "noScale",//showall(显示全部内容,保持比例,但是上下,或者左右可能有空白), noborder(缩放可以裁减内容,保持比例,但是不留空白), exactfit(缩放按照flash设置的高度和宽度,不保持比例),noscale(不缩放,原始比例)
    allowFullscreen: "true", //允许全屏
    allowScriptAccess: "always", //可以成功运行对外脚本
    bgcolor: "", //背景颜色
    wmode: "transparent" //Flash为透明背景
    };
    var attributes = {
    id:"main"
    };
    swfobject.embedSWF(
    "demo.swf", //Flash的地址url,
    "altContent", "550px", "400px", "10.0.0", //设置宽度、高度、版本号
    "expressInstall.swf", //指定express install SWF的URL并激活Adobe express install
    flashvars, //用name:value对指定你的flashvars
    params, //用name:value对指定你的嵌套object元素的params
    attributes); //用name:value对指定object的属性

    如果出现加载失败,请添加 <p><a href="http://www.adobe.com/go/getflashplayer">Get Adobe Flash player</a></p>进行下载Flash。

    编写C#中html内容,实现方法。

    <body>

    <textarea id="ta" rows="10" cols="50">你好,flash</textarea>
    <button style="200px;height:50px;" onclick="callFlash()">js调用as3.0</button>
    <div style="height:10px;" />

    </body>

    /**
    * js调用flash
    */

    function jsCall(){
    var ta=document.getElementById("ta");
    var s=ta.value;
    console.log(s);
    swf=swfobject.getObjectById("main");
    swf.jsCall(s);
    }

    /**
    * flash调用js
    */

    function flashfullscore(value){
    alert("flash发来消息:"+value);
    return "消息:”"+value+"“"+"已收到";
    }

    这样C#中基本上实现了编写的程序,如果需要和后台的程序进行数据交换,可以使用AJAX,

    /**
    * flash调用js
    */
    function flashfullscore(value) {
    //alert("flash发来消息:" + value);
    //return "消息:”" + value + "“" + "已收到";
    $.ajax('@Url.Action("SubmitAchievement", "TeachManage")', {//这里是测试链接,根据自己的程序编写链接!
    type: "POST",
    data: { jsoninput: value },//后台接收的值jsoninput:值
    async: false,
    success: function (data) {
    if (data == "ok") {
    swf = swfobject.getObjectById("main");
    swf.jsCall(data);

    alert("提交成功!!");
    }
    else {
    alert("提交失败!!");
    }
    }
    });
    }

    实现Flash程序中的代码:

    //js调用as3.0
    if(ExternalInterface.available){
    ExternalInterface.addCallback("jsCall",jsCall);
    }
    function jsCall(value:*){
    tf3.text=value+"";
    }

    //as3.0调用js
    //import com.adobe.serialization.json.JSON;
    btn.addEventListener(MouseEvent.CLICK,clickHandler);
    function clickHandler(e:MouseEvent){
    if(ExternalInterface.available){
    var jsonString:String = new String();
    jsonString = "{"ExamName":"+tf1.text+","Score":"+"88"+"}";//Flash传过去的数据,这里以Json数值为例子传值。
    var ret:String = ExternalInterface.call("flashfullscore",jsonString);
    tf2.text = ret;
    }
    else{
    trace("交互不可用,需要将swf放到网页里边。");
    }
    }

    项目下载链接:https://files.cnblogs.com/files/wxylovejx/JsFlash.zip

    不要让过去的自己,绑架现在的自己。不要让现在的自己,讨厌未来的自己。不要让未来的你,后悔现在的自己。
  • 相关阅读:
    生成随机端口函数
    于获得MFC窗口其它类指针的方法
    VC6.0中使用ADO操作Access数据库 (转)
    【原创】C++利用IXMLDOM解析XML文件。
    转帖:用MFC对话框做无闪烁图片重绘一一 程序设计: icemen
    C代码优化方案(转)
    【转】C++ Socket UDP "Hello World!"
    线程中使用UpdateData出错解决方法(转)
    C语言调试打印log函数。
    Windows Sockets 网络编程(三) —— WINDOWS SOCKETS 1.1 程序设计(转)
  • 原文地址:https://www.cnblogs.com/wxylovejx/p/8384573.html
Copyright © 2020-2023  润新知