`
dxb928da
  • 浏览: 11026 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

SWF与SWF交互

 
阅读更多

SWF与SWF交互
2010年07月23日
  在AS2里SWF与SWF交互是非常容易的,可在AS3里一切都似乎复杂化了。 
  主SWF访问子SWF:
  比如有两个SWF。main.swf 、game.swf,main.swf加载game.swf。main 里有个按钮 _btn,game.swf里有一个gameMc:MovieClip 。 
  当按m1时,gameMc暂停播放。 
  在AS2里可以方便的写: 
  var mc=this.createEmptyMovieClip("mc",10) 
  var  loader:MovieClipLoader=new MovieClipLoader() 
  loader.loadClip("game.swf",mc) 
  loader.addListener(loadListener) 
  var loadListener=new Object() 
  loadListener.onLoadInit = function(target_mc:MovieClip) { 
  _btn.onRelease=function(){  
  target_mc. gameMc.stop() 
  } 
  } 
  可是如果在AS3里直接这样操作的话是会出错的,有2个新地方要注意: 
  ApplicationDomain、LoaderContext、 
  在main.as: 
  package {  
  import flash.display.MovieClip;  
  import flash.events.*;  
  import flash.display.Loader;  
  import flash.net.URLRequest;  
  import flash.events.ProgressEvent;  
   import flash.system.ApplicationDomain  
  import flash.system.LoaderContext  

  import flash.display.SimpleButton 
  public class main extends MovieClip {  
  var _loader:Loader;  
  var _swfArray:Array;  
  var _urlRequest:URLRequest;  
  public function main() {  
  _swfArray=["game.swf","link.swf","news.swf"];  
  _loader=new Loader();   
  _btn.addEventListener(MouseEvent.CLICK,cm1);   
   var loadContxt= new LoaderContext(false,ApplicationDomain.currentDomain)  
  /*这个在更复杂的例子中会遇到,比如
  RuntimeAssetsExplorer。www.adobe.com/go/learn_programmingAS3samples_flash_cn
  */
  _loader.contentLoaderInfo.addEventListener(Event.INIT,loaded);  
  _loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loading);  
  _loader.load(new URLRequest(_swfArray[n]),loadContxt);   
  }  
  function loaded(e=null) {  
  trace("加载完成...");  
  var mc:*=e.target.content;  
  //mc.name="mc";  
  addChild(mc);  
  }  
  function cm1(e=null) {  
  var mc:*=_loader.content  
  mc.gameMc.stop()  
  }  
  }  
  }
  子SWF访问主SWF:
  当按了下game.swf里的gameMc:MovieClip,让main.swf的按钮_btn为不可见
  game.as
  package { 
  import flash.display.MovieClip; 
  import flash.events.*; 
  public class game extends MovieClip { 
  public var gameMcs; 
  public function game() { 
  //gameMc.stop() 
  gameMcs="hrrrrrrh"; 
  trace("kkk"); 
  gameMc.buttonMode=true; 
  gameMc.useHandCursor=true; 
  gameMc.addEventListener(MouseEvent.CLICK,setAlpha); 
  } 
  public function Test() { 
  return ("s"); 
  } 
  public function setAlpha(e=null) { 
  e.target.play(); 
  this.parent[’_btn’].visible=false; 
  } 
  } 
  }
  最后,翻阅AS3帮助可以知道:
  LoaderContext(checkPolicyFile:Boolean = false, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null)
  checkPolicyFile 属性
  :指定 Flash Player 是否应在开始加载对象本身之前,尝试从所加载对象的服务器上下载跨域策略文件。 此标志适用于 Loader.load() 方法,但不适用于 Loader.loadBytes() 方法。
  如果是使用 Loader.load() 方法下载 SWF 文件,也尽量不要将 checkPolicyFile 设置为 true。 这是因为 SWF 到 SWF 的权限不是由策略文件控制的,而是由 Security.allowDomain() 方法控制的,因此在加载 SWF 文件时 checkPolicyFile 不起任何作用。 在这种情况下不必再检查是否存在策略文件,因为这样会延迟 SWF 文件的下载,并且可能会不必要地占用网络带宽 (Flash Player 无法判断您的主下载将是 SWF 文件还是图像,这是因为策略文件下载先于主下载进行)。
  applicationDomain 属性
  (这里比较重要一点):
  指定用于 Loader.load() 或 Loader.loadBytes() 方法的应用程序域。 只应在加载使用 ActionScript 3.0 编写的 SWF 文件(不是图像或使用 ActionScript 1.0 或 ActionScript 2.0 编写的 SWF 文件)时才使用此属性。
  每个安全域被分成一个或多个由 ApplicationDomain 对象表示的应用程序域。 应用程序域并不是用于安全目的;它们用于管理 ActionScript 代码的协作单元。 如果是从其它域加载 SWF 文件,并允许将它放置到另外一个安全域中,则您将无法控制所加载的 SWF 文件被放置到哪个应用程序域中;即使您指定应选择某个应用程序域,也会忽略。 但是,如果是将 SWF 文件加载到您自己的安全域中(因为此 SWF 文件来自您自己的域,或者您正在将它导入到您的安全域中),您就可以控制为所加载的 SWF 文件选择哪个应用程序域。
  在 LoaderContext.applicationDomain 中,您只可以传递您自己的安全域中的应用程序域。 如果试图传递任何其它安全域中的应用程序域,则会引发 SecurityError 异常。
  securityDomain 属性
  :指定用于 Loader.load() 操作的安全域。 只应在加载 SWF 文件(而不是图像)时使用此属性。
分享到:
评论

相关推荐

    Flash与JS交互案例

    Flash与JS交互案例,网页内可以进行SWF和JS数据交互。

    Delphi和Flash(SWF)交互

    Delphi和Flash(SWF)交互代码,

    Flex中SWF和SWF文件之间的通信案例

    Flex中SWF和其他SWF文件之间的通信原理。该案例中TestLocalConnection为主SWF文件加载了TestLocalConnectionReceiver.SWF,两者之间是在同一个域下的通信,工程代码编译路径需要下载者手动修改下。其他技术细节参见...

    使用LocalConnection进行swf之间的数据交互(附helloWorldDemo)

    NULL 博文链接:https://globle.iteye.com/blog/748144

    识别主板结构(交互).swf

    识别主板结构(交互).swf

    Flash与C#交互全集(bs与cs).rar

    全面介绍flash与C#的交互数据的方式,包括B/S与C/S 两种方式,范例比较简单,比较详细

    flex与flash的交互

    NULL 博文链接:https://hcty31.iteye.com/blog/1262374

    VC-Flash完美交互

    1.FlashCtrl.exe是VS2005编写的C++程序 2.Temp.swf是 FlashCS5 编写的as3脚本程序 3.测试需要将FlashCtrl.exe和Temp.swf放在同一...8.通过6.7两种数据交互实现flash-vc互相通讯 9.若不能加载swf电脑需先安装flash插件

    Word等文件转换为SWF文件

    将Word等符合要求的文件上传到服务器后转换成Swf文件并且显示,而且需要和JS交互来实现显示SWF的一些控制 所以自己很早深入研究过Flash的一些插件源码 也试着修改过 最近看到很多人遇到这个问题 所以分享一下。 不喜...

    SWFtoVideoProPortable.rar

    Moyea SWF to Video Pro是一款专业的SWF转换器,能够将交互SWF转化为多种视频、音频和图像格式,转换过程支持RGBA透明和Alpha通道。 Moyea SWF to Video Pro功能强大之处在于支持较多的转换格式,如常规的MP4、...

    SWF to Video Converter v5.0

    转换的过程中允许用户对 flash 电影交互,您也可以选择│ │跳过所有向前跳转的帧或逐帧转换。 │ │7. 可以对 flash 电影的帧进行可视化裁剪,仅保留您需要的│ │部分,当然您也可以直接输入需要保留部分的坐标...

    flash与unity3D交互

    flash与unity3D交互 几种常用的方法机器代码实现

    ADShareit SWF to Video Converter Pro 是一款功能强大的视频转换软件

    6. 转换的过程中允许用户对 flash 电影交互,您也可以选择跳过所有向前跳转的帧或逐帧转换。 7. 可以对 flash 电影的帧进行可视化裁剪,仅保留您需要的部分,当然您也可以直接输入需要保留部分的坐标进行转换。 8. ...

    人人遵守交通法规.swf

    flash安全教育课件,课件制作精美,形象卡通,富有亲和力,交互性强,特别适合小学生安全教育,欢迎大家多提宝贵意见。

    静夜思Flash课件.swf

    静夜思Flash课件.swf

    AS3与JS交互通信(使用swfObject插入Flash)

    3、使用Flash中的ExternalInterface.call方法和fscommand方法对JS进行调用与传送数据。 4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的函数。 包含swfobject.js与fla源文件。 (*...

    Talkee视频交互平台

    本程序是基于Adobe Flash Media Server 采用流媒体传输技术构建的一个视频互动平台,以Flash程序(swf)做前端,.Net技术左做后台支持,FuorineFX提供flash与.Net的通讯方式.同时采用MS SQL Server 2005 数据库. 平台...

    仿真平面镜成像实验 swf

    仿真平面镜成像实验 swf 初中物理 光学

    aaaan祝福.swf

    aaaan祝福.swf

    可以创建交互式的Flash动画的AlligatorFlashDesigner

    Selteco Flash Designer 可以为你的网页创建交互式的 Flash 动画,可以用它创建网页的 Flash 按钮或是 Banner,网页菜单...输出 SWF 格式和生成 HTML 代码;添加 WAV 和 MP3 声音;使用 ActionScript 制作交互式电影。

Global site tag (gtag.js) - Google Analytics