SWF加载和调用另一个SWF中的类中函数
- 博客分类:
- 技术杂绘
SWF加载和调用另一个SWF中的类中函数
2010年12月27日
AS技术2010-12-27 16:19:38阅读0评论0 字号:大中小 订阅 /*
* SWF加载
*/
package
{
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
/**
* SWF加载器
*/
public class SWFLoader extends EventDispatcher
{
private var m_loadinfo:LoaderInfo;
public function get loadinfo():LoaderInfo
{
return m_loadinfo;
}
public function SWFLoader() {}
/**
加载SWF
*/
public function Load(url:String):void
{
var loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext();
/** 加载到子域 */
context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain) ;
InitLoadEvent(loader.contentLoaderInfo);
loader.load(new URLRequest(url),context);
}
/**
* 获取当前ApplicationDomain内的类定义
*
* name类名称,必须包含完整的命名空间,如 Grave.Function.SWFLoader
* info加载swf的LoadInfo,不指定则从当前域获取
* return获取的类定义,如果不存在返回null
*/
public function GetClass(name:String, info:LoaderInfo = null):Class
{
try
{
if (info == null)
{
return ApplicationDomain.currentDomain.getDefinition(name ) as Class;
}
return info.applicationDomain.getDefinition(name) as Class;
}
catch (e:ReferenceError)
{
//trace("定义 " + name + " 不存在");
return null;
}
return null;
}
/**
* @private
* 监听加载事件
*
* @param info加载对象的LoaderInfo
*/
private function InitLoadEvent(info : LoaderInfo):void
{
info.addEventListener(ProgressEvent.PROGRESS, this.onProgress);
info.addEventListener(Event.COMPLETE, this.onComplete);
info.addEventListener(IOErrorEvent.IO_ERROR, this.onError);
info.addEventListener(SecurityErrorEvent.SECURITY_ ERROR, this.onError);
}
/**
* @private
* 移除加载事件
*
* @param inft加载对象的LoaderInfo
*/
private function RemoveLoadEvent(info:LoaderInfo):void
{
info.removeEventListener(Event.COMPLETE,onComplete );
info.removeEventListener(ProgressEvent.PROGRESS,on Progress);
info.removeEventListener(IOErrorEvent.IO_ERROR,onE rror);
info.removeEventListener(SecurityErrorEvent.SECURI TY_ERROR, onError);
}
///////加载事件
private function onComplete(e:Event):void
{
var info:LoaderInfo = e.currentTarget as LoaderInfo;
RemoveLoadEvent(info);
m_loadinfo = info;
this.dispatchEvent(e);
}
////// 加载中
private function onProgress(e:ProgressEvent):void
{
this.dispatchEvent(e);
}
///////////// 出错事件
private function onError(e:Event):void
{
this.dispatchEvent(e);
}
}
}
/////////////////////////////////////主类的调用
package
{
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author
*/
public class Test extends Sprite
{
private var swfload:SWFLoader;
public function Test()
{
start();
}
private function start():void
{
swfload = new SWFLoader();
swfload.Load("Button/Button.swf");
swfload.addEventListener(Event.COMPLETE, evt);
}
private function evt(e:Event):void
{
var Tempclass:Class = swfload.GetClass("MC", swfload.loadinfo);
var button_1:*= new Tempclass();
button_1.x = 275;
button_1.y = 180;
addChild(button_1);
button_1.click1();
var button_2:*= new Tempclass();
button_2.x = 275;
button_2.y = 250;
addChild(button_2);
button_2.click2();
}
}
}
/////////////////////////另一个SWF的一个元件类
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
/**
* ...
* @author
*/
public class MC extends Sprite
{
public function MC()
{
}
public function click():void
{
}
public function click1():void
{
Btn.addEventListener(MouseEvent.CLICK, mouse1);
}
private function mouse1(e:MouseEvent):void
{
trace("同一按钮的触发事件1……");
}
public function click2():void
{
Btn.addEventListener(MouseEvent.CLICK, mouse2);
}
private function mouse2(e:MouseEvent):void
{
trace("同一按钮的触发事件2……");
}
}
}
发表评论
-
开始Windows Embedded Compact 7的第一个项目――虚拟机上的CEPC
2012-01-20 09:27 858开始Windows Embedded Compact ... -
Windows窗口和消息(2)
2012-01-20 09:27 679Windows窗口和消息(2) 2011 ... -
Windows Azure真实案例--Lokad 公司通过软件+服务高效提供先进的预测服务
2012-01-20 09:27 650Windows Azure真实案例--Loka ... -
windows下实现微秒级的延时
2012-01-20 09:27 744windows下实现微秒级的延时 2010年11月17日 ... -
探究 Windows Vista 中新的语音识别与合成 API(转)
2012-01-20 09:27 925探究 Windows Vista 中新的 ... -
专项训练十七
2012-01-19 14:31 617专项训练十七 2012年01 ... -
登徒子好色赋所表达的意思
2012-01-19 14:31 689登徒子好色赋所表达的 ... -
在 flash.net.NetStream 上找不到属性 onMetaData
2012-01-17 04:16 1450在 flash.net.NetStream 上找不到属性 on ... -
javascript高级程序设计 -- 读书笔记(一)
2012-01-17 04:16 618javascript高级程序设计 -- 读书笔记(一) 20 ... -
域的应用(一)
2012-01-17 04:16 655域的应用(一) 2010年06月 ... -
殿堂之路学习笔记(3)_第三部分_AS3.0核心类
2012-01-17 04:16 1075殿堂之路学习笔记(3)_第 ... -
《因为是你》--2
2012-01-16 03:07 668《因为是你》--2 2012年01月13日 兼职保姆 ... -
我心中完美男人的形象
2012-01-16 03:07 598我心中完美男人的形象 2011年12月18日 一 ... -
我的2011年感慨语录
2012-01-16 03:07 752我的2011年感慨语录 2012 ... -
2012-1-8
2012-01-16 03:07 4802012-1-8 2012年01月08日 ... -
2011-11-29
2012-01-16 03:07 5122011-11-29 2011年11月29日 ...
相关推荐
JS调用swf函数 JS调用flash函数 JS与flash通讯 JS与SWF通讯 JS调用AS函数 源代码下载
今天花了一些时间整理出来了Swf 文件与JavaScript通信的示例,在此贴出供大家参考。 在ActionScript3.0与JavaScipt通信的时候需要用到...ActionScript函数可以返回一个值,JavaScript会立即接收它作为该调用的返回值。
本文实例讲述了JS访问SWF的函数用法。分享给大家供大家参考。具体分析如下: ...如果要JS访问Flash中的函数,需要用addCallBack注册一个回调函数,让JS去调用(AS2例子) import flash.external.*; var meth
多文件上传组件 temp.html 上传调用实例 update_.swf 上传FLASH文件 update.asp 接收示例 ASP...添加了每个文件上传完成时,调用JAVASCRIPT函数 challs_flash_onComplete() 函数 更新了错误处理系统 修正了部分BUG
必须定义一个在调用事件处理函数时执行的函数。您可以在时间轴上定义该函数,也可以在扩展 MovieClip 类或链接到库中的元件的类文件中定义该函数。 一旦满足阻止 Flash Player 调用已定义函数的条件,将 ...
必须定义一个在调用事件处理函数时执行的函数。您可以在时间轴上定义该函数,也可以在扩展 MovieClip 类或链接到库中的元件的类文件中定义该函数。 一旦满足阻止 Flash Player 调用已定义函数的条件,将 ...
我们常常在FC函数中写一些需要重复执行的代码,可以在程序不同地方调用,可以被OB调用,也可以被FC调用。使用FC可以简化我们需要重复执行的任务,提高代码的运行效率。FC类似于200的子程序。 FB:FC+DB组合,意思是...
预加载器允许您快速显示图形和动画,以便您网页的访问者在加载 SWF 文件的其余部分时可以查看一些内容。 如何为 Starling 应用程序创建预加载器? 这与为任何其他 SWF 文件创建预加载器并没有什么不同。 这是我如何...
它们形成了一个框架,用于在 Javascript 中编写和运行 Amazon SWF 活动和决策程序。 也可以看看 :适用于 Amazon SWF 的 Node.js 库 :Amazon SWF 的 Node.js 活动工作集合 swf-activity: 运行活动工作者 非常...
所有这些事件都可以在一个SWFUpload实体中被调用,这意味着在这些事件对应的函数中,你可以用 this 关键字来代替引用SWFUpload实体。 + fileDialogComplete (number of files selected) - 触发条件 1. 用户...
12.4节暂停、倒放和重新播放一个Effect 12.5节创建自定义Effect触发器 12.6节创建渐变特效 12.7节在Flex Effect里使用DisplacementMapFilter过滤器 12.8节创建AnimateColor 特效 12.9节使用Convolution Filter创建...
Qt调用Flash,传递参数到Flash。
使用flowplayer()函数调用播放器,第一个参数是播放器的id,第二个参数是播放器的路径,它是一个flash文件,一定要保证播放器的路径正确。 如果不是使用a标签调用视频文件,而是使用DIV来调用,则代码如下: ...
要做一个页面上短信息的提示音的功能,本来想用HTML5中Audio+IE下的bgsound来实现,可是发现每种浏览器对Audio的解码类型还不一样,顿时有种崩溃的感觉。没办法还是用Flash稳妥一点吧。 相信JavaScript与Flash交互...
AppEmit v1.1.03概述Appemit是一种轻量级的中间件,可以轻松扩展以与本地程序通信应用程序(尤其是浏览器)。... 为本地硬件DLL驱动程序模块开发一个软件包插件,以操作和控制网页中的本地读卡器,打印机,扫描仪,高照
在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...
4、使用Flash中的ExternalInterface.addCallback方法创建接口,使JS能够调用AS中的函数。 包含swfobject.js与fla源文件。 (*下载swfObject开发版及示例请访问:http://code.google.com/p/swfobject/) 兼容性,...
去除logo,打印,增加js调用函数。修改加载中文名swf问题。