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 文件(而不是图像)时使用此属性。
发表评论
-
深入了解GPU--学习教材 (摘自opengpu)
2012-01-20 02:23 429深入了解GPU--学习教材 ( ... -
CQ与其他聊天工具继承
2012-01-20 02:23 638CQ与其他聊天工具继承 2010年06月13日 VBSc ... -
隐藏命令行CMD框
2012-01-20 02:23 670隐藏命令行CMD框 2010年07月18日 vbs脚本: ... -
insert->Step Generator
2012-01-20 02:23 543insert->Step Generator 2010 ... -
[转]使用C#开发ActiveX控件全攻略
2012-01-20 02:23 680[转]使用C#开发ActiveX控 ... -
决定了,就不放弃!
2012-01-19 10:13 496决定了,就不放弃! 2010 ... -
好书网址十八
2012-01-19 10:13 680好书网址十八 2011年05月02日 【古代文化生活】 ... -
2011学习总结(二)感悟篇
2012-01-19 10:13 4832011学习总结(二)感悟篇 ... -
人生读书帐
2012-01-19 10:13 616人生读书帐 2011年02月13 ... -
OpenGL开发库的详细介绍
2012-01-17 02:54 529OpenGL开发库的详细介绍 ... -
opengl
2012-01-17 02:54 659opengl 2010年11月17日 ... -
转载:OpenGL显示文字
2012-01-17 02:54 500转载:OpenGL显示文字 2010年07月03日 本课 ... -
Windows XP的小秘密 {10}
2012-01-17 02:53 633Windows XP的小秘密 {10} 2011年06月03 ... -
CSRF with Flash
2012-01-15 22:31 632CSRF with Flash 2010年01月13日 ... -
深入理解Flash Player的安全域(Security Domains)
2012-01-15 22:31 1087深入理解Flash Player的安全域(Security D ... -
Flex开发者需要知道的10件事
2012-01-15 22:31 540Flex开发者需要知道的10件事 2010年02月27日 ... -
Flash专用
2012-01-15 22:31 528Flash专用 2011年01月23日 ...
相关推荐
Flash与JS交互案例,网页内可以进行SWF和JS数据交互。
Delphi和Flash(SWF)交互代码,
Flex中SWF和其他SWF文件之间的通信原理。该案例中TestLocalConnection为主SWF文件加载了TestLocalConnectionReceiver.SWF,两者之间是在同一个域下的通信,工程代码编译路径需要下载者手动修改下。其他技术细节参见...
NULL 博文链接:https://globle.iteye.com/blog/748144
识别主板结构(交互).swf
全面介绍flash与C#的交互数据的方式,包括B/S与C/S 两种方式,范例比较简单,比较详细
NULL 博文链接:https://hcty31.iteye.com/blog/1262374
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文件并且显示,而且需要和JS交互来实现显示SWF的一些控制 所以自己很早深入研究过Flash的一些插件源码 也试着修改过 最近看到很多人遇到这个问题 所以分享一下。 不喜...
Moyea SWF to Video Pro是一款专业的SWF转换器,能够将交互SWF转化为多种视频、音频和图像格式,转换过程支持RGBA透明和Alpha通道。 Moyea SWF to Video Pro功能强大之处在于支持较多的转换格式,如常规的MP4、...
转换的过程中允许用户对 flash 电影交互,您也可以选择│ │跳过所有向前跳转的帧或逐帧转换。 │ │7. 可以对 flash 电影的帧进行可视化裁剪,仅保留您需要的│ │部分,当然您也可以直接输入需要保留部分的坐标...
flash与unity3D交互 几种常用的方法机器代码实现
6. 转换的过程中允许用户对 flash 电影交互,您也可以选择跳过所有向前跳转的帧或逐帧转换。 7. 可以对 flash 电影的帧进行可视化裁剪,仅保留您需要的部分,当然您也可以直接输入需要保留部分的坐标进行转换。 8. ...
flash安全教育课件,课件制作精美,形象卡通,富有亲和力,交互性强,特别适合小学生安全教育,欢迎大家多提宝贵意见。
静夜思Flash课件.swf
3、使用Flash中的ExternalInterface.call方法和fscommand方法对JS进行调用与传送数据。 4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的函数。 包含swfobject.js与fla源文件。 (*...
本程序是基于Adobe Flash Media Server 采用流媒体传输技术构建的一个视频互动平台,以Flash程序(swf)做前端,.Net技术左做后台支持,FuorineFX提供flash与.Net的通讯方式.同时采用MS SQL Server 2005 数据库. 平台...
仿真平面镜成像实验 swf 初中物理 光学
aaaan祝福.swf
Selteco Flash Designer 可以为你的网页创建交互式的 Flash 动画,可以用它创建网页的 Flash 按钮或是 Banner,网页菜单...输出 SWF 格式和生成 HTML 代码;添加 WAV 和 MP3 声音;使用 ActionScript 制作交互式电影。