`
maloveqiao
  • 浏览: 102663 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

as3.0利用FlashProxy类来实现js跨域访问数据的方法源代码

    博客分类:
  • as3
 
阅读更多
1.  /**
   2. * @author Kinglong
   3. * @version 0.5
   4. */ 
   5.  
   6. package com.klstudio.upload { 
   7.     
   8.     import flash.display.*; 
   9.     import flash.events.*; 
  10.     import flash.net.*; 
  11.     import flash.external.ExternalInterface; 
  12.     import flash.system.Security;    
  13.  
  14.     public class FlashProxy extends Sprite{  
  15.          
  16.         private var _params:Object; 
  17.         private var _loader:URLLoader; 
  18.         private var _method:String; 
  19.         private var _id:String; 
  20.         private var _parse:Boolean; 
  21.         private var _inited:Boolean; 
  22.         private var _data:String; 
  23.         private var _xml:XML; 
  24.          
  25.         public function FlashProxy(){ 
  26.             Security.allowDomain('*'); 
  27.             _inited = false; 
  28.             _data = ""; 
  29.             _parse = true; 
  30.             _method = URLRequestMethod.POST; 
  31.             _loader = new URLLoader(); 
  32.             configureListeners(_loader); 
  33.         } 
  34.          
  35.         public function load(page:String,params:Object=null):void{ 
  36.             if(!_inited){ 
  37.                 showError("FlashProxy还没有初始化!"); 
  38.             } 
  39.             if(page == null || page == undefined){ 
  40.                 showError("page参数为必须的!"); 
  41.                 return; 
  42.             } 
  43.             var vars:URLVariables = new URLVariables(); 
  44.             vars.tmp = Math.random(); 
  45.             if(params != null){              
  46.                 for(var key in params){ 
  47.                     if(key == "tmp"){ 
  48.                         continue; 
  49.                     } 
  50.                     vars[key] = params[key]; 
  51.                 } 
  52.             }           
  53.             _loader.dataFormat = URLLoaderDataFormat.TEXT; 
  54.             var request:URLRequest = new URLRequest(page); 
  55.             request.method = _method; 
  56.             request.data = vars; 
  57.             _loader.load(request); 
  58.         } 
  59.          
  60.         public function setParse(value:Boolean):void{ 
  61.             _parse = value; 
  62.         } 
  63.          
  64.         public function setMethod(value:String):void{ 
  65.             if(value == null || value == undefined){ 
  66.                 return; 
  67.             } 
  68.             value = StringUtil.trim(value); 
  69.             if(value.toLocaleUpperCase() == URLRequestMethod.POST || value.toLocaleUpperCase() == URLRequestMethod.GET){ 
  70.                 _method = value.toLocaleUpperCase(); 
  71.             }           
  72.         } 
  73.          
  74.         public function getData():String{ 
  75.             return _data; 
  76.         } 
  77.          
  78.         private function configureListeners(dispatcher:IEventDispatcher):void { 
  79.             dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
  80.             dispatcher.addEventListener(Event.OPEN, openHandler); 
  81.             dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
  82.             dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
  83.             dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
  84.             dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
  85.         } 
  86.          
  87.         private function completeHandler(event:Event):void { 
  88.             _data = _loader.data; 
  89.             if(_parse){ 
  90.                 try{ 
  91.                     _xml = new XML(_data);                   
  92.                 }catch(error:Error){ 
  93.                     _parse = false; 
  94.                     _xml = null; 
  95.                     Tracer.debug("xml解析错误!"); 
  96.                 } 
  97.             } 
  98.             ExternalInterface.call(_id+".onComplete"); 
  99.         } 
100.  
101.         private function openHandler(event:Event):void { 
102.             ExternalInterface.call(_id+".onOpen"); 
103.         } 
104.  
105.         private function progressHandler(event:ProgressEvent):void {             
106.             ExternalInterface.call(_id+".onProgress",event.bytesLoaded,event.bytesTotal); 
107.         } 
108.  
109.         private function securityErrorHandler(event:SecurityErrorEvent):void { 
110.             showError("读取失败!\n  不能跨域访问,可能是你在web服务端根目录下没有放置crossdomain.xml文件!"); 
111.         } 
112.  
113.         private function httpStatusHandler(event:HTTPStatusEvent):void { 
114.             showError("读取失败!\n  HTTP错误代码为:"+event.status); 
115.         } 
116.  
117.         private function ioErrorHandler(event:IOErrorEvent):void { 
118.             showError("读取失败!\n  可能是因为下列原因:\n    1.网络忙,请稍候重试!\n    2.访问的web服务端没有开启!"); 
119.         } 
120.          
121.         public function alert(msg:String):void{ 
122.             navigateToURL(new URLRequest(msg)); 
123.         } 
124.          
125.         public function showError(msg:String):void{          
126.             ExternalInterface.call(_id+".onError",msg); 
127.         } 
128.     } 
129.     
130. }
分享到:
评论

相关推荐

    flash服装网站as3.0源代码

    源代码的设计者巧妙地利用了AS3.0的面向对象特性,构建了一个易于理解和扩展的框架。用户可以通过源代码学习如何用AS3.0实现动态图片加载、交互式导航、产品滑动展示等功能,这些都是服装网站中常见的设计元素。 在...

    时钟源代码 Flash as3.0

    "时钟源代码 Flash as3.0" 时钟源代码 Flash as3.0是一个使用 ActionScript 3.0 编写的时钟程序,旨在帮助开发者快速创建一个时钟。该源代码提供了一个基本的时钟架构,包括时钟的基本组成部分,如时钟圆盘、时钟...

    as 3.0类代码

    以上就是根据标题和文件名推测出的AS3.0类应用的相关知识点,具体实现细节需要查看源代码才能了解。通过学习和理解这些知识点,开发者可以更好地掌握AS3.0的类应用开发,创建出功能丰富的交互式内容。

    AS3.0与JS交互

    在现代Web开发中,Flash(ActionScript 3.0,简称AS3.0)与JavaScript(JS)的交互是常见的技术需求,特别是在实现富互联网应用(RIA)时。这种交互能力使得网页上的Flash内容能够与JavaScript环境进行通信,从而...

    as3.0相册源代码

    AS3.0相册源代码是一个基于ActionScript 3.0编程语言的项目,用于创建一个展示图片的交互式相册。ActionScript是Adobe Flash Professional和Adobe Animate CC中的主要编程语言,主要用于开发富互联网应用(RIA)和...

    as3.0双屏联动支持swf

    1. **源代码**:开发者可能提供了AS3.0的源代码,供学习者研究和修改,以便理解双屏联动的实现原理。 2. **示例文件**:可能包括一个已经编译好的SWF文件,可以直接在Flash Player中运行,展示双屏联动的实例。 3. *...

    缓动 TweenMax 非常强大的as3.0缓动类

    总的来说,`TweenMax` 是AS3.0开发中的强大工具,无论是简单的平移还是复杂的动画序列,都能游刃有余地处理。通过掌握 `TweenMax` 的使用,开发者能够为应用程序增添丰富的视觉体验,提高用户体验。

    as3.0跨域源码

    as3.0跨域源码,需要结合服务器一起实现

    国外经典的31个flash as特效(as3.0)

    这些源文件为初学者提供了宝贵的实践材料,你可以逐个研究每个特效的代码,理解它们如何运用AS3.0的基础知识来实现特定效果。通过这种方式,你可以加深对ActionScript 3.0的理解,提升编程技能,并激发创新灵感。 ...

    基于as3.0小游戏

    开发者可以通过定义类来创建游戏对象,如角色、敌人、道具等,并通过继承实现代码复用,提高开发效率。 2. **事件驱动**:AS3.0采用事件驱动模型,游戏中的各种互动,如用户点击、游戏状态改变,都会触发相应的事件...

    as3.0实现的一个碰撞类小游戏

    在这个“as3.0实现的一个碰撞类小游戏”中,我们将探讨AS3.0的核心特性以及如何利用这些特性来构建碰撞检测的游戏机制。 在AS3.0中,游戏开发的基础是事件驱动模型。游戏循环通常由一个主循环函数(如`enterFrame`...

    as3.0利用ExternalInterface与js交互的播放器

    在本文中,我们将深入探讨如何在AS3.0(ActionScript 3.0)中使用ExternalInterface类与JavaScript进行交互,特别是在实现一个自定义播放器的场景中。这个主题是针对那些希望在网页中集成Flash内容并与网页的...

    UDP.rar_as3 udp_flash as3.0 UDP_flash发送udp_udp as3_windows as3.0

    5. **关闭连接**:当不再需要UDP连接时,记得调用NetConnection的close方法来释放资源。 对于Windows平台上的AS3应用,需要注意的是,由于浏览器的安全限制,Flash Player在默认情况下不允许在沙箱环境中使用UDP。...

    AS3.0类 flash 抽象类工具包

    开发者可以创建自己的计时器类,通过继承Timer并重写相关方法来实现特定的定时功能。 6. **BitmapData**: 尽管BitmapData不是严格意义上的抽象类,但它提供了一种处理像素数据的方式,可以被其他类如Bitmap和Filter...

    AS3.0类关系图.

    1. **基础类和接口**:AS3.0中的Object类是所有其他类的基类,而接口定义了一组方法,但不提供实现。类关系图会展示这些基础类和接口,以及它们与其他类的关系。 2. **包结构**:AS3.0的类分布在不同的包中,如`...

    AS3.0 饼图 图表

    3. 实现`draw()`方法,使用`Graphics`类的`beginFill()`、`moveTo()`和`lineTo()`方法来绘制每个扇形。为了实现3D效果,我们需要对每个扇形的角度进行适当调整,使其看起来有深度。 **3D效果**: 1. 为了模拟3D效果...

    As3.0贪吃蛇源代码

    通过上述分析,我们了解到这个基于As3.0的贪吃蛇游戏是如何通过类和方法的设计来实现其核心功能的。通过这些基本的组件和逻辑,我们可以构建出一个简单但完整的贪吃蛇游戏。这对于初学者来说是一个很好的学习案例,...

    ddp.rar_as3 游戏_as3.0游戏_flash AS3.0

    《深入解析AS3.0对对碰游戏...通过对这个AS3.0对对碰游戏源代码的分析,开发者不仅可以掌握基础的AS3.0编程技巧,还能学习到游戏开发的通用流程和策略,对于想要进入游戏开发领域的初学者来说,是一个宝贵的实践案例。

Global site tag (gtag.js) - Google Analytics