- 浏览: 1085028 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
AS3复制可视对象
一,复制舞台上的影片剪
方法1——反射方法:
var ClassRef:Class = getDefinitionByName(getQualifiedClassName(t_mc)) as Class;
var clone_mc:DisplayObject = new ClassRef();
addChild(clone_mc);
方法2——构造器方法:
var ClassRef:Class = t_mc.constructor;
var clone_mc:MovieClip = new ClassRef();
addChild(clone_mc);
方法3——编译器自动生成类方法:
此方法是方法1的变种,它比方法1更加简单、粗暴、有效。下面我将为大家特别讲解一下这个方法:
首先,在库中创建一个影片剪辑,随意绘制一个图形,然后在第一帧上加上一个单行注释符“//”;
接下来,将刚才创建的影片剪辑拖到舞台上,创建一个示例,命名为“t_mc”;
现在,重点来了,我们在主时间线上写下如下所示语句,然后按下Ctrl+Enter,仔细观察一下输出面板中输出的信息。
trace(getQualifiedClassName(t_mc));
你发现,输出结果是“_fla::Timeline_1 ”。出于对函数getQualifiedClassName的作用的清晰理解,你立刻就想到,这个Timeline_1应该就是编译器自动为我们的库中的影片剪辑创建的类。我们貌似可以用这个类new出多个一样的影片剪辑来哦!是不是这样呢?我们来验证一下:
var clone_mc:DisplayObject = new Timeline_1();
addChild(clone_mc);
Ctrl+Enter,你惊喜的发现,我们成功了!实验到这里,可能很多朋友已经兴奋地准备去写学习总结了。兄弟们,不要急,我们的实验还没完——现在,我们用同样的方法,再次在库中创建一个影片剪辑。然后也将它拖到舞台上创建一个实例,取名为“d_mc”。接下来,我们将trace(getQualifiedClassName(t_mc)); 语句中的“t_mc”改成“d_mc”。测试一下影片,这次输出的结果竟然是“flash.display::MovieClip”。
忽忽!傻了吧,不能用new MovieClip来复制“d_mc”了吧!
咋解决这个问题呢?我给大家一点点提示:试试将库中那两个影片剪辑各取一个响亮的名字(名称),然后再看一下输出的类名是什么。
使用以上方法复制影片剪辑时需要注意:
必须在库中创建影片剪辑,并将库中的影片剪辑拖到舞台上创建了一个实例;
影片剪辑的帧上必须包含代码(注释也行,最简单的就是加一个单行注释符号“//”);
二,复制Loader加载的swf
复制外部加载的swf是一个相对高级的操作,步骤比较多,过程相对复杂,要阐述清楚原理细节需要很大篇幅的文字,因此,这里我就偷懒不详细写说明了,纯用代码来说明问题,希望对看得懂的朋友起到抛砖引玉的作用。
方法1——ByteArray深度复制
var byteLoader:URLLoader = new URLLoader();
byteLoader.dataFormat = URLLoaderDataFormat.BINARY;
byteLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);
var loader:Loader = new Loader();
loader.y = 200;
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.INIT, loadInitHandler);
function loadInitHandler(evt:Event):void
{
var cloneLoder:Loader = new Loader();
addChild(cloneLoder);
cloneLoder.loadBytes(byteLoader.data);
}
byteLoader.load(new URLRequest("t.swf"));
function loadCompleteHandler(evt:Event):void
{
loader.loadBytes(byteLoader.data);
}
简单原理:用URLLoader将外部的swf以二进制数据格式加载到ByteArray中,然后用Loader类的loadBytes去加载URLLoader中的ByteArray。
方法2——ApplicationDomain 运行时动态类复制
var loader:Loader = new Loader();
loader.y = 200;
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.INIT, loadInitHandler);
var context:LoaderContext = new LoaderContext();
context.applicationDomain=ApplicationDomain.currentDomain;
loader.load(new URLRequest("t.swf"), context);
function loadInitHandler(evt:Event):void
{
var ClassRef:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("TestClass") as Class;
var clone_mc: MovieClip = new ClassRef();
addChild(clone_mc);
}
注意:
1.以上两种复制方法,由于都需要加载swf文件,因此需要文件级别的本地安全性;
2.使用第二种方法(ApplicationDomain)时,生成“t.swf”时必须为舞台添加文档类属性。添加的文档类可以是具体的外部as类,也可以仅仅是一个名字。上例中我添加的文档名为”TestClass”, getDefinition("TestClass")中填的参数内容应该跟要复制的swf的文档类名相同。
3. ApplicationDomain还有更多高级用法,有兴趣的高级AS程序员可以去研究一下。
出处:http://hi.baidu.com/javabbs/blog/item/dcb9a1456269182dcefca32d.html
一,复制舞台上的影片剪
方法1——反射方法:
var ClassRef:Class = getDefinitionByName(getQualifiedClassName(t_mc)) as Class;
var clone_mc:DisplayObject = new ClassRef();
addChild(clone_mc);
方法2——构造器方法:
var ClassRef:Class = t_mc.constructor;
var clone_mc:MovieClip = new ClassRef();
addChild(clone_mc);
方法3——编译器自动生成类方法:
此方法是方法1的变种,它比方法1更加简单、粗暴、有效。下面我将为大家特别讲解一下这个方法:
首先,在库中创建一个影片剪辑,随意绘制一个图形,然后在第一帧上加上一个单行注释符“//”;
接下来,将刚才创建的影片剪辑拖到舞台上,创建一个示例,命名为“t_mc”;
现在,重点来了,我们在主时间线上写下如下所示语句,然后按下Ctrl+Enter,仔细观察一下输出面板中输出的信息。
trace(getQualifiedClassName(t_mc));
你发现,输出结果是“_fla::Timeline_1 ”。出于对函数getQualifiedClassName的作用的清晰理解,你立刻就想到,这个Timeline_1应该就是编译器自动为我们的库中的影片剪辑创建的类。我们貌似可以用这个类new出多个一样的影片剪辑来哦!是不是这样呢?我们来验证一下:
var clone_mc:DisplayObject = new Timeline_1();
addChild(clone_mc);
Ctrl+Enter,你惊喜的发现,我们成功了!实验到这里,可能很多朋友已经兴奋地准备去写学习总结了。兄弟们,不要急,我们的实验还没完——现在,我们用同样的方法,再次在库中创建一个影片剪辑。然后也将它拖到舞台上创建一个实例,取名为“d_mc”。接下来,我们将trace(getQualifiedClassName(t_mc)); 语句中的“t_mc”改成“d_mc”。测试一下影片,这次输出的结果竟然是“flash.display::MovieClip”。
忽忽!傻了吧,不能用new MovieClip来复制“d_mc”了吧!
咋解决这个问题呢?我给大家一点点提示:试试将库中那两个影片剪辑各取一个响亮的名字(名称),然后再看一下输出的类名是什么。
使用以上方法复制影片剪辑时需要注意:
必须在库中创建影片剪辑,并将库中的影片剪辑拖到舞台上创建了一个实例;
影片剪辑的帧上必须包含代码(注释也行,最简单的就是加一个单行注释符号“//”);
二,复制Loader加载的swf
复制外部加载的swf是一个相对高级的操作,步骤比较多,过程相对复杂,要阐述清楚原理细节需要很大篇幅的文字,因此,这里我就偷懒不详细写说明了,纯用代码来说明问题,希望对看得懂的朋友起到抛砖引玉的作用。
方法1——ByteArray深度复制
var byteLoader:URLLoader = new URLLoader();
byteLoader.dataFormat = URLLoaderDataFormat.BINARY;
byteLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);
var loader:Loader = new Loader();
loader.y = 200;
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.INIT, loadInitHandler);
function loadInitHandler(evt:Event):void
{
var cloneLoder:Loader = new Loader();
addChild(cloneLoder);
cloneLoder.loadBytes(byteLoader.data);
}
byteLoader.load(new URLRequest("t.swf"));
function loadCompleteHandler(evt:Event):void
{
loader.loadBytes(byteLoader.data);
}
简单原理:用URLLoader将外部的swf以二进制数据格式加载到ByteArray中,然后用Loader类的loadBytes去加载URLLoader中的ByteArray。
方法2——ApplicationDomain 运行时动态类复制
var loader:Loader = new Loader();
loader.y = 200;
addChild(loader);
loader.contentLoaderInfo.addEventListener(Event.INIT, loadInitHandler);
var context:LoaderContext = new LoaderContext();
context.applicationDomain=ApplicationDomain.currentDomain;
loader.load(new URLRequest("t.swf"), context);
function loadInitHandler(evt:Event):void
{
var ClassRef:Class = loader.contentLoaderInfo.applicationDomain.getDefinition("TestClass") as Class;
var clone_mc: MovieClip = new ClassRef();
addChild(clone_mc);
}
注意:
1.以上两种复制方法,由于都需要加载swf文件,因此需要文件级别的本地安全性;
2.使用第二种方法(ApplicationDomain)时,生成“t.swf”时必须为舞台添加文档类属性。添加的文档类可以是具体的外部as类,也可以仅仅是一个名字。上例中我添加的文档名为”TestClass”, getDefinition("TestClass")中填的参数内容应该跟要复制的swf的文档类名相同。
3. ApplicationDomain还有更多高级用法,有兴趣的高级AS程序员可以去研究一下。
出处:http://hi.baidu.com/javabbs/blog/item/dcb9a1456269182dcefca32d.html
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
HTTP/1.1协议规范(中文归纳版)
2012-04-18 16:39 2113一、介绍(introduction) ... -
[转] [Flash/Flex] 加载SWF性能VS影片剪辑性能
2012-03-15 22:29 0http://bbs.9ria.com/viewthread. ... -
关于富士通windows 7家庭普通板升级为windows 7旗舰版
2012-03-05 14:51 2015windows7普通家庭版不能一下升级到windows7旗舰版 ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2449实现这效果其实比较简单,主要是思路~! package ... -
请问如何才能让加载到一半的SWF不自动播放
2012-02-29 03:06 1538我用loader加载l=new Loader(); ... -
禁止输入文本可以粘贴
2012-02-10 13:15 2316//禁止输入文本粘贴动作 private static ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
[教程] 路点导航(Waypoint Navigation)
2011-12-31 00:51 0前言:这个不难,所以知道的童鞋不要喷,不知道的童鞋也不要怕,要 ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
Embed绑定XML与txt文本文件
2011-12-28 15:54 4648使用Embed标签可以将图片绑定到swf中并显示,那么我 ... -
Flash_Rich_Text_Editor(完美的富文本编辑器)
2011-12-27 17:55 0Flash_Rich_Text_Editor(完美的富文 ... -
弹弹堂测试
2011-12-08 04:21 0弹弹堂测试弹弹堂测试 -
一些DEMO
2011-11-28 17:42 0一些DEMO一些DEMO -
Matrix学习
2011-11-28 16:51 0Matrix学习 -
[转]三次贝尔曲线
2011-11-10 01:09 1923http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2939先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[转]服务器端ActionScript语言参考
2011-10-31 00:29 0服务器端ActionScript语言参考 -
[转]FLASH与JS序列简单应用
2011-10-28 01:03 2088FLASH与JS序列简单应用 (一) 用swfob ...
相关推荐
AS3是Flash Professional或Flex Builder等开发工具中的主要编程语言,它基于ECMAScript规范,提供了更高效、面向对象的编程体验。 首先,我们要理解水滴效果的实现原理。这通常涉及以下几个关键知识点: 1. **图形...
在AS3中,Flash Player并不直接支持将BitmapData对象保存为PNG格式,因此需要自定义的编码器。PNGEncoder类实现了将BitmapData对象的数据编码为PNG格式的字节流,以便可以将其发送到服务器或保存到本地。 2. **...
3. 专家模式:隐藏帮助信息,扩大可视区域,便于查看和编辑长代码段。 此外,学习资源部分提到了中文和英文的学习资料,这对于深入理解和掌握AS400及RPG编程至关重要。学习过程中,结合实际案例和不断的实践,将有...
- **颜色值复制**:如果新的坐标位于源图片的可视范围内,则将该位置的颜色值复制到目标图片对应位置。 #### 5. 总结 本文介绍了如何在Visual Basic中实现位图的任意角度旋转,通过具体的代码示例,详细解释了实现...
【Python图论算法实现工具——NetworkX(3)有向图、多图等图生成器及图的可视化1】 在图论中,图形是数据结构的一种抽象表示,用于描述对象之间的关系。Python中的NetworkX库提供了对各种图类型的支持,包括有向图...
3. **路径描述**:理解路径描述是编程的基础,如`_root`, `_parent`, `this`, `mc1.mc2...`, `_leveln.mc1.mc2...`等,它们用于定位和操作舞台上的不同层级的对象。 4. **问题解决**:遇到困难时,要独立思考,尝试...
3. **编译Shaders**:编写GLSL代码并编译成AS3对象,以便在GPU上运行。 4. **创建Buffer和Texture**:根据3D模型的数据创建VertexBuffer3D和IndexBuffer3D,以及用于贴图的Texture。 5. **上传数据**:将模型数据...
但如果你需要在程序中动态读取或复制源代码,可以借助VB6.0的内置函数和对象。例如,`OpenTextFile`函数用于打开一个文本文件,`ReadLine`方法用来读取文件的一行内容,`Close`方法关闭已打开的文件。以下是一个简单...
- **对象动画**:介绍如何使用AS3的动画功能,实现对象的位置、大小和透明度变化。 - **舞台方向**:讨论如何设置舞台的方向,以适应不同的屏幕布局和用户界面设计。 - **动态加载显示内容**:解释如何从外部资源...
首先,VB6.0的核心特性包括事件驱动编程模型、可视化设计界面(IDE)以及简单的语法结构。通过事件驱动,开发者可以轻松地响应用户的操作,如点击按钮、选择菜单项等。IDE允许开发者拖拽控件到窗体上,以图形化的...
`shutil`库则提供了高级文件和文件集操作,如复制、移动和删除文件或目录。 了解并熟练掌握这些文件操作技巧,对于进行Python数据分析及可视化工作至关重要。无论是读取原始数据、保存处理结果,还是生成报告,都会...
- 将下载的支持包文件解压缩,将 archives 文件夹复制到 MATLAB 的安装目录下的 `D:\Matlab\R2018b\bin\win64`。 - 打开 CMD 命令行工具,进入 MATLAB 的安装命令路径,例如 `cd/d D:\Matlab2020a\bin\win64`。 -...
3ds Max是一款强大的三维建模和渲染软件,广泛应用于游戏开发、影视特效、建筑可视化等领域。下面,我们将详细探讨这些关键知识点。 首先,文件操作是3ds Max工作流程的基础。"New"(新建)用于创建新的项目,...
ActionScript 3 的 `SoundMixer` 类提供了 `computeSpectrum` 方法,用于获取当前播放声音的频谱信息,这对于音频可视化非常有用: ```actionscript var spectrumInfo:ByteArray = new ByteArray(); SoundMixer....
1. `draw()`:将DisplayObject绘制到BitmapData上,可以用于捕捉舞台上的任何可视对象。 2. `getPixel(x, y)` 和 `setPixel(x, y, color)`:获取或设置指定位置的像素颜色,color是一个32位整数,包含RGB和透明度...
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long...
在AS3中,我们可以创建一个MovieClip对象作为放大镜的图形表示,并监听鼠标的移动事件。当鼠标移动时,更新遮罩区域的位置和大小,然后对遮罩下的图像进行处理。以下是一些关键步骤: 1. **创建放大镜图形**:使用...
- MATLAB的`copyobj`和`set`函数可用于复制和修改图形对象的属性,创建自定义图形样式。此外,MATLAB R2014b及以后版本引入了样式表(Style Sheets),使得全局图形风格的改变变得简单。 通过熟练掌握这些知识点,...
VB,全称Visual Basic,是由微软公司开发的一种可视化的、面向对象的编程语言,属于.NET框架的一部分。VB基于Basic语言,以其易学易用著称,适合初学者进行编程学习。它允许开发者通过拖拽控件和设置属性来构建用户...