中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
C#程序与Flash的接口
作者:flashvan 时间:2003-02-03 11:07 出处:互联网 责编:chinaitpower
              摘要:C#程序与Flash的接口

参照sourceforge的开源项目,数据传输采用WDDX方法把对象及其属性串行化,接收端则解串行化解析出相应的数据。

 

//****************************************************************************
//                       ______
//                    .-"      "-.
//                   /    AOL     \
//                  |              |
//                  |,  .-.  .-.  ,|
//                  | )(__/  \__)( |
//                  |/     /\     \|
//        (@_       (_     ^^     _)
//   _     ) \_______\__|IIIIII|__/__________________________
//  (_)@8@8{}<________|-\IIIIII/-|___________________________>
//         )_/        \          /
//        (@           `--------`     AOL FLASH STUDIO.
//****************************************************************************
// @FileName SharpFlash.as
// @Package sharpflash
// @Description C#程序与flash交互的接口,采用Singleton模式,只允许一个接口
// @Author aol
// @Email jeremy1982@21cn.com
// @Create 2004.10.10
// @LastChange 2004.10.11
// @History
//****************************************************************************

class sharpflash.SharpFlash
{
        private static var _instance:SharpFlash;
        
        public static function get instance():SharpFlash
        {
                //trace(_instance);
                if (_instance == null)
                {
                        _instance = new SharpFlash();
                }
                return _instance;
        }
        
        ///////////////////////////////////////////////////////
        
        private var _data:String;
        
        private var watch:Function;
        
        private var wddx:Wddx;
        private var callBackList:Array;
        
        
        //构造函数
        private function SharpFlash()
        {
                wddx = new Wddx();
                this.watch("data",onData);
        }
        
        //属性data,由C#来赋值,flash监视其值的变化
        public function get data():String
        {
                return _data;
        }
        
        public function set data(value:String):Void
        {
                _data = value;
        }
        
        //data变化处理方法
        function onData(prop:String, oldVal:String, newVal:String)
        {
                // _root.result.text = newVal;
                var xml:XML = new XML();
                xml.parseXML(newVal);
                
                var response_xml:XMLNode = xml.firstChild.firstChild;
                
                //回调函数ID
                var tmp:XMLNode = response_xml.childNodes[0].firstChild;
                
                // callback 函数在这个结点里面有一个或者两个参数
                // 通过解析从C#端发送的包的arg结点可以得出参数的数目
                var argCount:Number = response_xml.childNodes[1].childNodes.length;
                // _root.result.text = argCount;
                switch (argCount)
                {
                        case 1:
                        var arg1_wddx_xml:XML = new XML();
                        arg1_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[0].firstChild);
                        var funcArgs = new Array(1);
                        funcArgs[0] = wddx.deserialize(arg1_wddx_xml);
                        
                        // 执行
                        callBackList[tmp].callback.apply(callBackList[tmp].scope, funcArgs);
                        
                        // debug 代码:
                        // _root.result.text = "1 Arg Result: [0] = " + funcArgs[0];
                        break;
                        
                        case 2:
                        var arg1_wddx_xml:XML = new XML();
                        arg1_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[0].firstChild);
                        var arg2_wddx_xml:XML = new XML();
                        arg2_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[1].firstChild);
                        var funcArgs:Array = new Array(2);
                        funcArgs[0] = wddx.deserialize(arg1_wddx_xml);
                        funcArgs[1] = wddx.deserialize(arg2_wddx_xml);
                        
                        // 执行
                        callBackList[tmp].callback.apply(callBackList[tmp].scope, funcArgs);
                        
                        // debug 代码:
                        //_root.result.text = "2 Arg Result: [0] = " + funcArgs[0] + "\n[1] = " + funcArgs[1];
                        break;
                        default:
                        break;
                }
        }
};
 
一个小示例,由C#得出当前程序所在路径。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有