AS3创建自定义类
as3.0教程
1.1.新建一个ActionScript (3)1.2.自定义应用程序属性 (3)1.3.在哪里写ActionScript (3)1.4.如何跟踪信息 (3)1.5.处理事件 (3)1.6.响应鼠标和键盘事件 (4)1.7.算术运算 (4)1.8.逻辑运算 (4)1.9.执行条件语句 (5)1.10.执行复杂的条件语句 (5)1.11.某段时间重复执行一种操作 (5)1.12.长时间执行一个任务 (6)1.13.创建可重用代码 (6)1.14.增强代码可重用能力 (6)1.15.从方法中退出 (7)1.16.获得方法的执行结果 (7)1.17.处理异常 (7)2.0.类 (8)2.1.创建自定义类 (8)2.2.类的保存 (8)2.3.创建成员属性 (8)2.4.创建静态方法或属性 (9)2.5.创建子类 (9)2.6.覆盖超类方法 (9)2.7.创建常量 (9)2.8.发送事件 (9)3.0 (10)3.1.检测播放器版本 (10)3.2.检测操作系统 (10)3.3.检测播放器类型 (10)3.4.检测系统语言 (10)3.5.检测显示设置 (10)3.6.缩放影片 (10)3.7.改变对齐方式 (11)3.8.隐藏Flash (11)3.9.检测设备音频 (11)3.10.检测设备视频 (11)3.11.提示用户改变播放器设置 (11)3.12.处理系统安全 (11)4.0.数字 (12)4.1.数字的不同表现形式 (12)4.2.不同数字类型之间的转换 (12)4.3.四舍五入 (12)4.4.格式化输出 (12)4.5.不使用掩码进行数字格式化 (13)4.6.格式化货币数字 (13)4.7.生成随机数 (13)4.8.模拟硬币投掷 (13)4.9.模拟骰子 (14)4.10 产生唯一的随机数 (14)4.11.转换角度计算 (14)4.12.计算两点之间的距离 (15)5.0.数组 (15)5.1.在数组首部和尾部添加元素 (15)5.2.遍历数组成员 (15)5.3.搜索匹配的数组元素 (15)5.4.删除数组元素 (16)5.5.在数组中间插入元素 (16)5.6.转换字符串为数组 (16)5.7.转换数组为字符串 (16)5.8.创建数组的拷贝 (16)5.9.存储多维数据 (17)5.10.数组排序 (17)5.11.实现自定义排序 (18)5.12.数组元素的随机排序 (19)5.13.取得数组元素的最大值和最小值 (19)5.14.比较数组 (19)5.15.创建关联数组 (19)5.16.读取关联数组 (19)6.0.渲染 (19)6.1.在可视化对象列表中添加项目 (20)6.2.从显示列表中删除项目 (20)6.3.向前或向后移动对象 (21)6.4.创建自定义可视化类 (22)6.5.创建简单的按钮 (22)6.6.动态载入外部图片 (23)6.7.载入外部swf (23)6.8.接收鼠标事件 (24)6.9.用鼠标拖拽对象 (25)7.0.绘图 (26)7.1.设置线条样式 (26)7.2.设置渐变线条样式 (26)7.3.画一条线 (26)7.4.划一条曲线 (27)7.5.画一条扇形 (27)7.6.画一个矩形 (27)7.7.画一个圆 (27)7.8.画一个椭圆 (27)7.9.画一个三角形 (27)7.10.画出规则的多边形 (27)7.11.绘制星形 (28)7.12.用实心和半透明来填充图形 (28)7.13.用渐变色填充图形 (28)7.14.用位图填充图形 (28)7.15.编写遮罩 (29)8.0.位图 (29)8.1.创建BitmapData (29)8.2.添加位图到可视化对象列表 (29)8.3.绘制可视化对象到位图上 (29)8.4.载入外部图片到位图上 (29)8.5.处理象素 (29)8.6.创建矩形填充 (30)8.7.创建一个充溢填充 (30)8.8.拷贝象素 (30)8.9.拷贝通道 (30)8.10.创建噪波图案 (31)8.11.创建布林噪波 (31)8.12.使用阈值 (32)8.13.在位图上应用滤镜 (32)8.14.在两幅位图之间转换 (32)8.15.滚动位图 (33)9.0.文本框 (33)9.1.创建带边框的文本框 (33)9.2.创建带背景色的文本框 (33)9.3.变成一个用户输入框 (33)9.4.变成一个密码输入框 (34)9.5.过滤文本输入框 (34)9.6.设置输入域的最大数量 (34)9.7.显示文本 (34)9.8.显示HTML (34)9.9.压缩空格 (34)9.10.调整文本框大小以适应内容 (34)9.11.滚动文本 (34)9.12.响应滚动事件 (35)9.13.格式化文本 (35)9.14.格式化用户输入的文本 (36)9.15.格式化一部分文本 (36)9.16.设置文本框字体 (36)9.17.嵌入字体 (36)9.18.创建可以被旋转的文字 (36)9.19.显示Unicode (36)9.20.设置文本框的焦点 (37)9.21.用ActionScript (37)9.22.设置文本框的光标位置 (37)9.23.响应文本选中和取消选中事件 (37)9.24.监听用户输入的内容 (37)9.25.在文本框里添加超链接 (37)9.26.用超链接调用ActionScript (38)9.27.高级文本布局 (38)9.28.高级抗锯齿 (38)9.29.替换文本 (39)9.30.获取系统字体列表 (39)10.0.颜色 (39)10.1.改变颜色 (39)10.2.应用色彩 (39)10.3.重置颜色 (39)10.4.倾斜 (39)10.5.应用简单的滤镜 (39)10.6.应用高级滤镜效果( (40)10.7.浮雕 (40)10.8.边检测 (40)10.9.锐化 (40)110.10.制作胶片效果 (40)10.11.应用灰度效果 (40)10.12.改变饱和度 (40)10.13.改变亮度 (40)10.14.改变对比度 (41)11.0.动作 (41)11.1.移动物体 (41)11.2.在指定方向上移动 (41)11.3.减速运动 (41)11.4.加速运动 (42)11.5.弹跳 (42)11.6.使用三角定理 (42)11.7.运用动画技术 (43)12.0.字符串 (43)12.1.字符串连接 (44)12.2.在字符串中使用引号和省略号 (44)12.3.插入特殊的空格字符 (44)12.4.搜索字串 (44)12.5.获取子串 (45)12.6.单词分析 (46)12.7.删除或替换字符或单词 (46)12.8.每次只读取一个字符 (47)12.9.大小写转换 (47)12.10.修正空格符 (47)12.11.反转字符串 (47)12.12.Unicode (48)14.0.日期/时间 (48)14.1.获得当前日期和时间 (48)14.2.获取时间值 (48)14.3.获取星期天数和月份名称 (49)14.4.格式化日期和时间 (49)14.5.格式化秒或毫秒为分或秒 (49)14.6.DMYHMSM和毫秒之间的转换 (49)14.7.使用Timer (49)14.9.字符串转换为日期 (49)15.0.声音 (49)15.1.创建Sound (49)15.2.开始和停止播放声音 (50)15.3.给声音数据设置缓冲 (50)15.4.声音的起始播放位置 (50)15.5.循环播放 (50)15.6.获得声音文件的大小 (50)15.7.读取声音文件的ID3 (50)15.8.判定音乐是否播放完毕 (51)15.9.跟踪音乐播放进度 (51)15.10.暂停和重新播放声音 (51)15.11.获得声音的音量 (52)15.12.停止播放所有的音乐 (52)15.13.读取音乐的声谱 (52)15.14.改变声音的音量和平衡度 (52)16.0.视频 (54)16.1.载入并播放视频 (54)16.2.控制视频声音 (54)16.3.读取回放时间 (54)16.4.获得视频长度 (54)16.5.控制回放时间 (54)16.6.缩放视频 (54)16.7.管理和监视缓冲及下载进度 (55)16.8.监听提示点 (55)16.9.给视频添加滤镜 (55)16.10.暂停和继续播放视频 (55)16.12.擦洗视频 (55)16.13.清除视频显示 (56)16.14.检测用户带宽 (56)17.0.数据 (56)17.1.创建,打开Local (56)17.2.写入数据到共享对象上 (56)17.3.保存本地共享对象 (57)17.4.从共享对象中读取数据 (57)17.5.删除共享对象中保存的数据 (57)17.6.序列化自定义类 (57)17.7.Flash (57)17.8.控制LSO (58)18.0.交互 (58)18.1.创建本地连接 (58)18.2.发送数据 (59)18.3.基于本地连接通信的有效性验证 (59)18.4.接受其他域的连接请求 (59)19.0.发送、读取数值 (60)19.1.从文本文件中读取数据 (60)19.2.从服务端脚本中读取变量 (60)19.3.读取文本块(包括HTML和XML) (61)19.4.检测读取进度 (61)19.5.边下载边访问数据 (61)19.6.发送数据给服务端脚本 (62)19.7.发送变量并处理返回结果 (62)20.0.XML (62)20.1.理解XML (63)20.2.创建XML (63)20.3.添加XML (63)20.4.添加文本节点 (63)20.5.在XML (64)20.6.读取XML (64)20.7.通过名字查找元素节点 (64)20.8.读取文本节点 (64)20.9.读取元素的属性 (65)20.10.删除元素,文本节点和属性 (65)20.11.载入XML (65)20.12.从不同域中读取XML (66)20.13.发送XML (66)20.14.搜索XML (67)20.15.在XML (67)21.0.远程过程调用 (68)21.1.调用Web (68)21.2.处理Web (68)21.3.处理Web (68)21.4.调用Flash Remoting方法 (68)21.5.处理FlashRemoting 响应 (68)22.0.与javascript通信 (69)22.1.调用JavaScript (69)22.2.调用ActionScript函数 (69)22.3.从HTML中传递参数给Flash (69)23.0.文件上传下载 (69)23.1.下载文件 (69)23.2.检测用户是否已选择了下载文件 (70)23.3.监视文件下载进度 (70)23.4.浏览本地文件 (70)23.5.过滤浏览对话框显示的文件 (70)23.6.监测用户是否选择了文件准备上传 (70)23.7.上传文件 (70)23.8.监视文件上传进度 (70)24.0.Socket (70)24.1.连接Socket服务器 (71)24.2.发送数据 (71)24.3.接收数据 (71)24.4.与socket服务器的状态信号交换 (72)24.5.断开与Socket服务器的连接 (73)24.6.处理Socket异常 (73)2ActionScriptitcroSnpAi3.0CookBook中文翻译1.1.新建一个ActionScript工程问题运行Flex Builder 2 然后新建一个ActionScript 工程解决方法使用新建ActionScript 工程向导来建立你的工程讨论一个ActionScript 工程一般至少包含一个class文件和一个用来放置编译输出的SWF和HTML的bin目录。
flash as3教程:类的介绍
1 //定义属性(默认为internal)
2 varname:String="ActionScript开发手册";
3 publicfunctiongetname():String{
4 ;
3.0中类的继承是怎么实现的。以动物举例说明,定义父类如下:
1packageActionScript.OOP.Inheritance
2{
3 importmx.messaging.channels.StreamingAMFChannel;
4
5 publicclassAnimal
6 {
1 public function TestEmployee():void {
2 var employee:Employee = new Employee();
3 = "Beniao";
4
5 trace();
3 publicclassEmployee
4 {
5 publicfunctionEmployee()
6 {
7 }
8
9 privatevarsalary:Number=0.0;
10 publicfunctiongetSalary():Number{
3.0中,所有的类都必须放在包中。用包来对类进行分类管理,相当于文件系统的目录。包的路径相对于类路径(classpath),默认的类路径就是项目的跟目录,既包含mxml文件的所在目录。在Java中同样有包的概念,而在.NET中大家通常称其为名称空间或命名空间。于之不同的是Java/.NET的类可以不属于任何包(名称空间),ActionScript则必须属于包。如下代码块:
AS3下Flash Remoting自定义类的实现
T h 8 — 5 一 6 0 6 5 99 4 e + 6 5 5 9 9 3 l 6 0 6
A 3下 Fa h R mo ig自定义 类 的实 现 S ls e t n
X I N G ua O H n—ya X U ng n, Fa
0a g i d m o t h i C l g , n h n 3 0 C ia i x n Mo e P l e nc o e e Na c a g3 0 1 , hn) y c l 2 A s a t Fa c n lg e e p dt dy te a g a e n ru htrev ro s f m e i l t el a o f h m nma b t c: l ht h o y d v l e t a ,h n u g t h o g e es n,r t mpe a zt n o e u p a i — r s e o o oo l we t h i o h s sr i i t j t n it at e t tdy S a ep oet e e p n . MF d v lp n a a o g n ru h t e in ,r m er e A F u p r i e c v , o o l g r c d v l me t A e e me t s l o et o g o n ri a r j o o h s h wo v r o s f a i M 0 sp ot s o lr
化 格 式 。在 网络 传 输 数 据方 面 , MF A 3比 A F M O效 率 更 高 。A 3能 将 it un 对 象 作 为 整 数 ( t e) 输 , 且 能 序 列 化 A . MF n 和 it i e r传 ng 并 S3 0
AS3.0自定义右键菜单类
AS3.0⾃定义右键菜单类AS3.0 ⾃定义右键菜单类:/*** ⾃定义右键菜单类* ⾃定义菜单项不得超过15个,每个标题必须⾄少包含⼀个可见字符。
* 标题字符不能超过100个,并且开头的空⽩字符会被忽略。
* 与任何内置菜单项相同的标题将被忽略。
**/package fengzi.menu{import flash.events.ContextMenuEvent;import flash.ui.ContextMenu;import flash.ui.ContextMenuBuiltInItems;import flash.ui.ContextMenuItem;public class Menu{private var menu:ContextMenu=new ContextMenu();/*** Menu 构造* @param object 对象(this)**/public function Menu(object:Object):void{//隐藏默认的菜单项menu.hideBuiltInItems();//应⽤菜单项object.contextMenu = menu;}/*** buildLinkMenu 菜单项* @param title 菜单项标题名称* @param ISenabled 菜单项是否启⽤(默认true启⽤,false未启⽤为灰⾊不可点击状态)* @param ISeparatorBefore 菜单项上⽅是否显⽰分隔条(默认false不显⽰)* @param Event ⿏标点击事件触动的⽅法(触动此⽅法,ISenabled设置为true)**/public function buildLinkMenu(title:String,ISenabled:Boolean=true,ISeparatorBefore:Boolean=false,Event:Function=null):void {var item:ContextMenuItem = new ContextMenuItem(title,ISenabled,ISeparatorBefore);//在菜单数组中添加⼀个选项menu.customItems.push(item);//菜单项是否接收⿏标点击item.enabled=ISenabled//菜单项上⽅是否显⽰分隔条item.separatorBefore = ISeparatorBefore;//触动的事件if (Event!=null){item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,mouseRelease);}function mouseRelease(event:ContextMenuEvent):void{Event();}}}}调⽤:import fengzi.menu.Menu;var menu:Menu = new Menu(this);menu.buildLinkMenu("as3.0 MENU 第⼀项",true); menu.buildLinkMenu("未启⽤为灰⾊不可点击状态第⼆项",false); menu.buildLinkMenu("打开 11AIR闪客社区第三项",true,true,link); function link():void{navigateToURL(new URLRequest("/") , "_blank");}。
flash(as3)
事件侦听器
事件的侦听器 侦听器-广播器模型与一般事件处理函 侦听器 数方法不同,它允许多个代码片断互不冲突地 侦听同一事件 格式: listenerObj.eventName = function(){ statement; }; broadcastObject.addListener(listenerObject); 可以用addListener方法注册,也可以用 removeListener()方法将其删除
自定义事件处理函数
自定义事件处理函数
AS中将按钮和影片剪辑的事件定义成类方 法,当事件发生时可以由类的实例调用.
Eg: Eg:对于按钮release事件,起类方法名为onRelease;对于影片 release , onRelease; 剪辑的enterFrame事件,其类方法名为onEnterFrame.
(2)事件驱动编程;事件驱动编程的概念正好相反,过去的被监视者 现在必须变成消息的发送者,现在的很多水壶都有一个峰鸣器,当 水开了后会发出叫声,影片剪辑man不需要对水进行不断的监视了, 只要峰鸣器(广播器)发出叫声(广播),监视者(侦听器)就可以收到那 个广播,然后就去把水拿走;要使man可以收听waterbottle的叫声, 必需把影片剪辑man注册成waterbottle事件的侦听对象; //为广播器对象waterbottle注册一个侦听器对象man; this.waterbottle.addListener(this.man); 这样当水开了后waterbottle就会向注册对象man发出通知--水开 了;收到通知后影片剪辑man就去把水拿走; //定义事件处理函数方法; this.man.onwaterbottletemperature=function (ss) { this.man.takewater(ss); }
AS3组件制作
import fl.core.UIComponent;
public class MyButton extends UIComponent {
private var nowSkin:MovieClip;
addChild(nowSkin);
}
nowSkin.width=width;
nowSkin.height=height;
}
protected function mouseOverHandler(e:MouseEvent):void{
11、把“FLA_ComX.fla"文件复制到以下路径:“D:\Program Files\Adobe Flash CS3\en\Configuration\Components\”,
这里大家也根据各自情况设置。
12、我们再次打开 Flash 软件,新建 AS3.0 .fla 空白文档,选出组件选择面板,会发现多了一个FLA_ComX组件包,
return "NormalSkin";
}
protected function getOverSkinName():String {
return "OverSkin";
}
}
}
代码的作用对我们建立的按钮组件进行一些设置,我这里只简单设置了鼠标经过和离开。接着保存,名为“MyButto.as”,位于我们上面建立的“FLA_ComponentX.fla”同目录下。
trace("out");
removeChild(nowSkin);
as3 自定义事件
AS3自定义事件(二)加入事件中要自带参数的话,那就需要自定义事件了。
其实使用自定义事件是非常简单的,分成三个部分:1.定义事件类package{import flash.events.Event;public class ClickEvent extends Event{public static constACTION:String = "Clicked";public varcause:String;public function ClickEvent(){super(ACTION);}}}其中super(ACTION);是唯一必须的构造函数,否则不能执行。
cause 是自定义的变量,可以用来传递参数。
如果有必要可以用get和set 来做更为复杂的处理。
补充:如果想让事件冒泡,则应该这么写-super(ACTION,true);2.发送事件clickEvent = new ClickEvent();clickEvent.cause = "example";dispatchEvent(clickEvent);3.接收事件navigation.addEventListener(ClickEvent.ACTION, clickHandler); private function clickHandler(evt:ClickEvent):void {trace("click event:"+evt.cause);}概括起来也就是:一:自定义一个派生自Event类的自定义事件类,里面设定好事件的type,也就是事件的string值名,并要在初始化函数中将其传给super 作参数二:在交互处新建一个自定义事件对象,并将这个对象用dispatchEvent发送到显示列表对象三:在目标处添加事件监听器,用于监听发送过来的事件。
可以看出,与平常的事件用法区别在于需要我们自己设定好事件发送的情况,而flash自带的一些事件则是会在某些情况发送的时候自动被发送。
as3自定义组件
新建文本文档 (2).txt介绍使用AS 3.0来建立自定义组件每个Flex 组件都是一个as 类,不管它是否是一个UI控制器,一个容器或者一些其它类型的组件。
在MXML中能建立的都能在AS中建立。
有一些可以用as做到,但是mxml做不到的。
建立一个as组件的步骤和你建立任何的as类的步骤非常类似。
首先,决定你的新类要扩展什么父类。
然后,决定你的类需要声明什么属性。
下一步,决定你需要实现的方法。
你也可能需要声明你的组件发送的事件。
如果你的组件是一个可视类,你很可能需要覆盖createChildren() 和 updateDisplayList()方法,因为它们是Flex 组件用来建立和布局组件的任何子元素的。
建立类的结构通常根据你需要的功能来选择继承什么超类。
覆盖createChildren()方法当用mxml建立一个组件,可以使用标准的mxml标签添加元素到组件中。
当你用as建立组件时,这些标签对你没用,可以建立你组件的子对像,你需要覆盖你组件父类的createChildren()方法,createChildren()方法会在Flex组件初始化期间被调用。
初始化次序如下:Constructor-构造器createChildren()-建立子对像commitProperties()-提交属性measure()-测量updateDisplayList()-更新显示列表后面四个方法在mx.core.UIObject里实现,事实上用as3.0建立的组件都需要覆盖createChildren()方法和updateDisplay()方法。
当你需要设置属性依赖其它已设置的属性时,你需要覆盖commitProperties(),或者你想要明确地传递在建立新的组件时的属性时,所有 子对像建立完成后,commitProperties()方法用来设置所有传递进来的属性。
在等待commitProperties()被调用之前,你需 要知道这些子对像已经成功实例化在它们的属性设置之前。
AS3的一些常用技巧
1.getDefinition - 模块化你的程序为了加快程序的加载..我们通常会把不同的功能模块做成不同的swf,要需要的时候再实行加载.开始的时候..我们通常会直接使用loader加载,,然后用addChild把loader显示出来..这样就完成了最简单的"模块"化了..当然进一步..我们会发现上面的方法已经满足不了我们的需求..有时候我们需要的不是一个实例对象,我们想得到的是一个类..让我们能够像调用自身库中的类一样能够实例化..复制..等等这时候我们就能够使用ApplicationDomain(应用程序域),把加载进来的swf中的库的东西当自己的库一样使用概念性的东西还是不好说...直接看代码吧..下面的代码就是一个最简单的例子//还是需要loader先实行加载var loader:Loader = new Loader()loader.contentLoaderInfo.addEventListener(PLETE, loaderComplete)//sub.swf是一个外部swf,该swf库里有一个链接名叫"k_abc"元件loader.load(new URLRequest("sub.swf"))function loaderComplete(e:Event):void{//创建一个应用程序域var app:ApplicationDomain = loader.contentLoaderInfo.applicationDomain//使用getDefinition返回sub.swf的库中链接名为k_abc的Classvar c:Class = app.getDefinition("k_abc") as Class//接下来就不多说了..像普通的类一样操作就2.AS3中for循环创建(复制)对象在as2中,我们经常使用for来创建或复制多个相同的对象,到了as3,因为建立对象的方法的改变,以前的方法已经不适用了.今天介绍一下as3的方法:方法常用的有两种,第一种适用所有的对象,方法是先建一个数组,然后把建立的对象的引用指定对数组相对应的索引第二种适用显示对象,其实在as3中,都应该用这种方式,就是给对象指定name,然后使用getChildByName的方式来引用该对象.//通用的方法,适用所有对象var obj:Array = new Array()for(var i:uint=0;i<10;i++){var m:MovieClip = new MovieClip()addChild(m)obj["mc"+i] = m}trace(obj["mc1"])//适用显示对象for(var k:uint=0;k<10;k++){var mm:MovieClip = new MovieClip() = "mc"+kaddChild(mm)}trace(getChildByName("mc1"))//通用的方法,适用所以对象var obj:Array = new Array()for(var i:uint=0;i<10;i++){var m:MovieClip = new MovieClip() addChild(m)obj["mc"+i] = m}trace(obj["mc1"])//适用显示对象for(var k:uint=0;k<10;k++){var mm:MovieClip = new MovieClip() = "mc"+kaddChild(mm)}trace(getChildByName("mc1"))另外,有时候我们会遇到这样的情况var obj0:MC0 = new MC0()var obj1:MC1 = new MC1()var obj2:MC2 = new MC2()var obj3:MC3 = new MC3()这个时修,我们能够使用getDefinitionByName,用字符串返回类for(var i:uint=0;i<4;i++){var _class:Class = getDefinitionByName("MC"+i) as Classvar m = new _class()addChild(m)}3.代理类对于代理类,它的作用就是在不能传参数的时候帮助你传参数,什么时候不能传参数,像:addEventListener(PLETE,function)这个时候如果我们需要给function参指定的参数以达到不同的效果,就需要用到代理..,我们看看以下的用了代理函数的代码addEventListener(PLETE,getFun(function,args))这样,我们就可以在本来不可以传参的情况下传送参数.其中getFun就是代理函数.(一般网上都已经直接写成了代理类),getFun会帮我们把function,args生成一个无参数的函数再传给addEventListener,那么我们原来的function只需要写成function(e:Event[,参数]):void{//代码}就可以了function getFun(_function:Function,...alt):Function{ var _fun:Function = function (e:*):void {var _alt:Array = new Array()_function.apply(null,_alt.concat(e,alt));};return _fun;}4.让对象removeChild时自动删除子对象/属性/侦听在AS3里..我们无法手动完全删除一个对象,,以MovieClip为例..我们只有在删除它的时候除了removeChild(对象)外还必须清空它的子对象删除所有动态添加的属性删除所有侦听删除所有引用然后等待垃圾回收,可是实际操作的时候..在长长的代码当中..经常会忘记自己什么时候写了侦听..什么时候添加了动态属性其实,,我们可以借用显示对象中的Event.REMOVED,在删除对象的时候,让对象自己调用删除函数,删除相关的东西下面这个类继承了MovieClip,当他的实例在removeChild的时候,对象将"自我毁灭"package net.L4cd.display{import flash.display.MovieClip;import flash.events.Event;dynamic public class iMovieClip extends MovieClip{private var lis:Array;//定义一数组保存侦听public function iMovieClip(){lis = new Array()addEventListener(Event.REMOVED,remove)//侦听删除事件}//重写addEventListener,在增加侦听的时候..把相应的事件保存到数组override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{lis.push([type,listener,useCapture])super.addEventListener(type,listener,useCapture,priority ,useWeakReference)}//"自我毁灭"的方法private function remove(e:Event):void{if(e.currentTarget != e.target)returnstop()//删除子对象trace("删除前有子对象",numChildren)while(numChildren > 0){removeChildAt(0)}trace("删除后有子对象",numChildren)//删除动态属性for(var k:String in this){trace("删除属性",k)delete this[k]}//删除侦听for(var i:uint=0;i<lis.length;i++){trace("删除Listener",lis[i][0])removeEventListener(lis[i][0],lis[i][1],lis[i][2])}lis = null}}}package net.L4cd.display{import flash.display.MovieClip;import flash.events.Event;dynamic public class iMovieClip extends MovieClip{private var lis:Array;//定义一数组保存侦听public function iMovieClip(){lis = new Array()addEventListener(Event.REMOVED,remove)//侦听删除事件}//重写addEventListener,在增加侦听的时候..把相应的事件保存到数组override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void{lis.push([type,listener,useCapture])super.addEventListener(type,listener,useCapture,priority,useWeakReference)}//"自我毁灭"的方法private function remove(e:Event):void{ if(e.currentTarget != e.target)return stop()//删除子对象trace("删除前有子对象",numChildren) while(numChildren > 0){ removeChildAt(0)}trace("删除后有子对象",numChildren)//删除动态属性for(var k:String in this){trace("删除属性",k)delete this[k]}//删除侦听for(var i:uint=0;i<lis.length;i++){trace("删除Listener",lis[i][0])removeEventListener(lis[i][0],lis[i][1],lis[i][2])}lis = null}}}然后我们另外新建一个flash,直接在时间轴上写下以下代码import net.L4cd.display.iMovieClip;var mc:MovieClip = new iMovieClip()mc.addEventListener(Event.ADDED,aaaa)mc.addEventListener(Event.ADDED_TO_STAGE,aaaa) mc.addEventListener(Event.ENTER_FRAME,aaaa)mc.addEventListener(MouseEvent.CLICK,aaaa)mc.addEventListener(MouseEvent.MOUSE_DOWN,aaaa) mc.a = ""mc.b = "我是动态属性2" = "我是MC"addChild(mc)function aaaa(e:Event){}removeChild(mc)mc = nullimport net.L4cd.display.iMovieClip;var mc:MovieClip = new iMovieClip()mc.addEventListener(Event.ADDED,aaaa)mc.addEventListener(Event.ADDED_TO_STAGE,aaaa) mc.addEventListener(Event.ENTER_FRAME,aaaa) mc.addEventListener(MouseEvent.CLICK,aaaa)mc.addEventListener(MouseEvent.MOUSE_DOWN,aaaa) mc.a = ""mc.b = "我是动态属性2" = "我是MC"addChild(mc)function aaaa(e:Event){}removeChild(mc)mc = null运行后.,,输出框就会出现删除前有子对象0删除后有子对象0删除属性 b删除属性 a删除Listener removed删除Listener added删除Listener addedToStage删除Listener enterFrame删除Listener click删除Listener mouseDown删除前有子对象0删除后有子对象0删除属性 b删除属性 a删除Listener removed删除Listener added删除Listener addedToStage删除Listener enterFrame删除Listener click删除Listener mouseDown这样,,,我们能做的事都已经做完了..等垃圾回收进行回收就ok了上面的remove方法就是mc在移除的时候,对自己进行的清理,,注意的是,以上只针对MovieClip进行的清理,每个类或你自定义的类都有不同..如Sprite不需用要stop(),不需要删除动态属性..等等..这个就由你自己去发挥~写一组自己的"自我毁灭"类..还有需要注意的是..像有时候,你只想removeChild,而不想进行删除,这样可以把上面的代码进行修改.把remove设置为公开的方法然后把addEventListener(Event.REMOVED,remove)去掉..最后在你想删除对象的时候,,,再调用remove()就ok了..5.自定义双击事件- iDoubleClickflash从as3开始支持双击事件..我们只需要使用对象.doubleClickEnabled = true,再侦听MouseEvent.DOUBLE_CLICK事件~就可以使用双击事件可是发现了一个不足的地方..如果我们同时侦听双击跟单击事件,,那当双击的时候.就会出现两个事件同时发生..这种情况实在不是很符合我们一般的需求..看来还是要用as2的老办法,用单击间的延时..来判断单击与双击..不过由于as3的事件机制~~我们完全可以模拟发现双击..直接看看应用代码//导入类import net.L4cd.*;//启用双击事件,注意一下.这里的200是指两次点击之前的延时.iDoubleClick.enable(mc,200)//另外可以使用iDoubleClick.disable(mc) 来取消自定义双击//像平常一样侦听mc.addEventListener(MouseEvent.DOUBLE_CLICK,mcDouCl ick)mc.addEventListener(MouseEvent.CLICK,mcClick) function mcClick(e:MouseEvent):void{trace(e)}function mcDouClick(e:MouseEvent):void{trace(e)}//导入类import net.L4cd.*;//启用双击事件,注意一下.这里的200是指两次点击之前的延时.iDoubleClick.enable(mc,200)//另外可以使用iDoubleClick.disable(mc) 来取消自定义双击//像平常一样侦听mc.addEventListener(MouseEvent.DOUBLE_CLICK,mcDouCl ick)mc.addEventListener(MouseEvent.CLICK,mcClick)function mcClick(e:MouseEvent):void{trace(e)}function mcDouClick(e:MouseEvent):void{trace(e)注意使用了自定义事件后就不要使用doubleClickEnabled = true,以免冲突然AS3 用for循环创建(复制)对象在as2中,我们经常使用for来创建或复制多个相同的对象,到了as3,由于建立对象的方法的改变,以前的方法已经不适用了. 今天介绍一下as3的方法:方法常用的有两种,第一种适用所有的对象,方法是先建一个数组,然后把建立的对象的引用指定对数组相应的索引第二种适用显示对象,其实在as3中,都应该用这种方式,就是给对象指定name,然后使用getChildByName的方式来引用该对象. ===========================================================================//通用的方法,适用所以对象var obj:Array = new Array()for(var i:uint=0;i<10;i++){var m:MovieClip = new MovieClip()addChild(m)obj["mc"+i] = m}trace(obj["mc1"])======================================================= ====================//适用显示对象for(var k:uint=0;k<10;k++){var mm:MovieClip = new MovieClip() = "mc"+kaddChild(mm)}问:新手求解flash as3.0 创建了一个mc,怎么用for语句把mc复制到舞台上,并且命名mc1,mc2,mc3。
as3声音类详解
一直都对as3的声音架构设计感到困惑,as3为什么要把播放和停止方法分开呢?为什么不能用一个Sound更换载入的声音呢?原来as3对声音的设计也是深思熟虑的。
目的不是为了把问题搞得复杂,而是为了在功能强化的同时做到精简。
并尽可能方便我们使用。
架构图:可以看出,as3中的声音处理是独立的,不再依赖影片剪辑作为声道。
as3使用多个类合作处理声音,功能被细化到对应的类中,使得逻辑更加清晰。
下面对着架构图由下往上详细阐述各个类所但当的任务。
Sound类负责创建、加载、播放声音。
Sound类更像BitmapData扮演的角色,用于描述数据。
而不是控制声音。
使用Sound创建声音有两种创建方式:1.通过库中元件创建和载入库中声音是Sound的子类。
要播放必须创建它们的实例。
2.通过外部加载的声音外部加载声音创建类型是Sound类本身。
为强调一个类描述一个声音数据这种模式,Sound禁止第二次加载外部声音。
加载控制符合open—progress—complete 的标准。
Sound的构造函数为Sound(stream:URLRequest =null, context:SoundLoaderContext = null),创建外部声音时与load方法参数相同。
如果创建库中的声音则不需要任何参数。
方法:load(stream:URLRequest = null, context:SoundLoaderContext =null):void加载声音。
不能使用一个Sound对象加载多个声音。
当有多声音播放时,必须为每个声音创建不同的Sound对象。
play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel播放声音。
startTimer为开始播放事件,单位为毫秒。
loops为循环次数,0和1都表示播放一次,如同flash属性面板中的次数设置。
AS3菜鸟教程
一、了解类一直想写个关于AS3.0的教程,但公司太忙都没时间写,最近看到群里有些朋友对3.0还不是很了解,所以从现在开始抽时间写点教程,从基本的东西开始.很多人还习惯用2.0去写一些东西,我已经有半年多没用2.0,很多2.0的习惯不能带到3.0中来,比如说在MC或BUTTON 上去写代码,当然3.0 里面还是可以在帧上写代码(这里用到的版本是FLASH CS3,FLEX对于初学者来说还不适合),但要想把AS学好,不管是2.0还是3.0都应该用类的方式来写代码.现在来写一个简单的类,了解一下类的结构:package{public class MyClass{public function MyClass(){}}}这里是一个类的简单结构,package是包的意思,学过JAVA的朋友应该知道这个概念,其实说简单点就是这个类文件所放的位置,假设现在我们这个项目是放在d:\exam这个文件夹里面,那么我们刚才写的类直接保存在exam这个文件夹里面,取名叫MyClass.as就可以了(注意:类的文件名应该跟类名一样),因为现在package后面没有任何东西,如果代码写成这样:package net.smilecn{public class MyClass{public function MyClass(){}}}那么MyClass.as就应该放在d:\exam\net\smilecn这个路径下面.public class MyClass : 这里是表示我们要建的这个类的名字是MyClass,这个名字可以随便起,习惯上以大写开头public function MyClass(){} : funciton 代表一个方法名,可以说是函数,跟类名相同的方法,我们称为构造函数,就是这个类被实例化时执行的函数,现在我们在把代码改一下:package net.smilecn{public class MyClass{public function MyClass(){trace("这个我写的第一个类");}}}我们在d:\exam下建立一个FLA文件,在第一帧写如下代码:import net.smilecn.MyClass;var myClass:MyClass = new MyClass();那么在输出面板里就会看到“这个我写的第一个类” 这段信息了,import net.smilecn.MyClass:导入我们的类(类在使用前要导入net.smilecn是包名,MyClass是类名)var myClass:MyClass = new MyClass() : 实例化MyClass这个类(实例化的时候会执行构造函数,那么就会执行trace 这句代码)今天就到这里,下节继续讲解类的使用.二、包概念,构造函数着上一节的内容,上一节中我们建了一个简单的类,讲解了包的概念,构造函数的概念,接下来再看看成员常、变量和成员函数的概念,再来看一段代码:package net.smilecn{public class MyClass{public const PI:Number = 3.1415926;public var r:Number;private var s:Number;public function MyClass(){trace("这个我写的第一个类");}}这里我们在以前的基础上增加了几句代码,const是定义常量,var是定义变量,所谓的常量就是永远不能改变的量,变量就是能够改变的量;public、private是属性关键字,在AS3中属性关键字有这样几个:public:指定类、变量、常量或方法可用于任何调用者private:指定变量、常量或方法仅可供声明或定义它的类使用protected:指定变量、常量、方法或命名空间只可用于定义它的类及该类的任何子类internal:指定类、变量、常量或函数可用于同一包中的任何调用者这里我们先重点看一下public、private这两个属性关键字,从字面上理解public是公共的意思,说简单点就是任何地方都可以调用,private是私有的意思,就是说只有这个类中才可以调用,我们用一个例子做一个简单的说明,还是在上一节中我们用的FLA文件中的第一帧加上这个的代码:import net.smilecn.MyClass;var myClass:MyClass = new MyClass();myClass.r = 3;//正确myClss.s = 18;//错误可以看到因为r声明为public,所以我们在外部调用是正确的,s声明为private,所以不直接在外部访问s这个变量,这就是public和private的区别,那我们要在外部改变s的值应该怎么做呢,我们可以这样做,在来修改MyClass类:package net.smilecn{public class MyClass{public const PI:Number = 3.1415926;public var r:Number;private var s:Number;public function MyClass(){trace("这个我写的第一个类");}public function setSValue(value:Number):void{s = value;}}}这样我们通过一个公共方法(方法就是函数的意思)设置了s的值,在FLA文件中这样调用:myClass.setSValue(18);就可以了,当然跟其它语言一样,我们也可以用get和set方法来读取或写入private变量的值:package net.smilecn{public class MyClass{public const PI:Number = 3.1415926;public var r:Number;private var s:Number;public function MyClass(){trace("这个我写的第一个类");}public function set sValue(value:Number):void{s = value;}public function get sValue():Number{return s;}}}我们在调用的时候就可以用这样的语句了:myClass.sValue =18;(当使用过set后可以这样操作)var a = myClass.sValue;(当使用过get后可以这样操作)下节继续!三、类的继承这一节,我们讲到一个我们用的比较多的一个概念—-继承.继承是指一种代码重用的形式,允许程序员基于现有类开发新类。
网页游戏开发语言AS3(ActiveScript3.0)简介
网页游戏开发语言AS3(ActiveScript3.0)简介网页游戏开发语言AS3(ActiveScript3.0)简介网页游戏开发用到的语言有很多种,AS3(ActiveScript3.0)就是网页游戏开发中经常使用到的语言,那么网页游戏开发语言AS3(ActiveScript3.0)具体是什么呢?以下是关于网页游戏开发语言AS3(ActiveScript3.0)的简单介绍,希望大家喜欢!面向对象的编程,其英文是“Object-OrientedProgramming”,简写为OOP。
它以对象为基本单元来进行代码划分,组织程序代码。
ActionScript3.0是一个完全标准的面向对象编程语言。
面向对象编程在Flash5已经开始支持,可惜语法不是业界传统的编程语言格式,在Flash5和FlashMX中编写面向对象的编程非常的不方便。
ActionScript2.0在面向对象的编程上有很大的进步,但是由于其使用的并不完全符合标准,存在很多的问题。
现在ActionScript3.0的.推出基本解决了ActionScript2.0中存在的问题,并有了很多的改进,而且相对于其它的OOP语言,其更简单易学。
1.面向对象编程技术概述面向对象编程中最重要也最难以理解的概念就是“对象”。
对象,指的是具有某种特定功能的程序代码。
对象(Object)具体可以指一件事、一个实体、一个名词,一个具有自己的特定标识的东西。
比如汽车、人、房子、桌子、植物、支票、雨衣等等都是对象。
对象就是一种客观存在,可能有时你觉得虚无飘渺,但是却的的确确存在着。
任何一个对象都有其属性。
以人为例,人有身高、体重、性别、血型、年龄等等,这些都反映了人作为一个社会存在所共有的特性。
把这些特性反映到编程语言中,这些特性就是属性,用来反映某一个对象的共有特点。
2.类对象是抽象的概念,要想把抽象的对象变为具体可用的实例,则必须使用类。
使用类来存储对象可保存的数据类型,及对象可表现的行为信息。
AS3教程-自定义应用程序属性
AS3教程-自定义应用程序属性2008年12月30日星期二 17:48问题我要改变SWF的尺寸或背景颜色解决方法指定项目属性里的编译器参数或者class文件的metadata 。
讨论不像早期版本的Flash,ActionScript 3.0 编译器真正是一个命令行编译器。
你可以通过命令行再加上一长串参数来创建类或目录,在eclipse里让这一切变得更简单些。
当建立ActionScript 工程后,默认情况下会生成500x375 尺寸的.swf, 帧速为24/秒,背景色为蓝色。
我们可以改变这些设定,有几种方法。
第一种方法就是通过ActionScript编译器参数改变编译器设定。
右键点击工程,在菜单中选择Properties ,然后在左边选择ActionScript Compiler ,在右边找到"Additional compilerarguments." 在这里就可以输入参数了,下面是些常见的参数-default-size width height-default-background-color color-default-frame-rate fps可以这样写:-default-size 800 600-default-background-color 0xffffff-default-frame-rate 31第一个参数设定输出swf尺寸为800x600 象素. 第二个参数设定背景色为白色,第三个参数设定播放帧速为31帧每秒。
多个参数可以这样写:-default-size 800 600 -default-frame-rate 31第二种方法就是通过类文件种的metadata 来改变设定。
Metadata 中包含的语句不会立即被解释,但是在编译的时候编译会去检测。
下面的语句具有等同效果[SWF(width="800", height="600", backgroundColor="#ffffff",frameRate="31")]这一行语句放在import之后,类定义之前,如:package ...{import flash.display.Sprite;[SWF(width="800", height="600", backgroundColor="#ffffff",frameRate="31")]public class ExampleApplication extends Sprite{public function ExampleApplication(){ } } }。
flash课件制作as3技巧-对象的方法
flash课件制作as3技巧-对象的方法方法就是在类中定义的函数,方法有实例方法、类方法和构造方法。
一、构造方法:构造方法也叫构造函数,是一个与类名同名的函数,通过构造函数可以创建类的实例。
定义构造函数需遵循下面的规则:1、构造函数必须与类同名。
2、每个类只能有一个构造函数。
3、构造函数与普通函数一样,可以带参数。
4、构造函数没有返回值。
5、要调用构造函数,必须使用new运算符。
二、用构造函数传递参数:构造函数的一个作用是把类外的参数传递到类里面,在创建实例时完成一些属性实例化。
在定义一个类时,一般把属性定义为私有。
如果在需要类外获取这个属性,可使用get()方法;如果需要在类外部设置这个属性,可使用set()方法。
这样可以保证类的封装,一个属性就可以不被类外部访问、只能获取、只能设置等权限,并且这些权限是可以组合的。
三、在构造函数种使用this:当成员变量与局部变量的命名相同时,成员变量会被隐藏起来,此时就可以使用this来访问成员变量。
四、默认构造函数:如果在编写类时,没有编写构造函数,系统会自动创建一个默认的构造函数。
五、实例方法和静态方法:类中定义的方法可以分为实例方法和静态方法。
静态方法用static来修饰。
在类中使用静态方法时一定要注意:静态方法中只能访问静态属性,而不能访问实例属性,但实例方法对静态属性和实例属性都能访问。
静态方法可以调用其它静态方法,而实例方法不能调用静态方法。
实例属性和实例方法可以合称为实例成员,类属性和类方法可以合称为类成员。
当类加载时,就会为类成员分配一定的内存,因此可以通过类名来访问类成员,但不会为实例成员分配一定的内存,因为此时实例并不存在,所以静态方法不能访问实例属性。
当创建一个实例时,系统会为实例的属性和方法分配一定的内存。
实例成员是每个实例特有的,但类成员是所有实例共有的。
ActionScript3(AS3)类库学习之(八)——自定义上下文菜单
ActionScript3(AS3)类库学习之(⼋)——⾃定义上下⽂菜单⼀.定义菜单项⽤ContextMenuItem类来表⽰上下⽂菜单中的项1.新建菜单项var menuitem:ContextMenuItem = new ContextMenuItem(caption);2.菜单项标题的限制a.菜单项必须包含⼀个可见字符且不能超过 100 个字符。
b.控制字符、换⾏符和其他空⽩字符将被忽略。
c.与内置菜单项或其他⾃定义菜单项相同的标题将被忽略,⽐较时将不考虑⼤⼩写、标点符号或空⽩。
d.不允许使⽤以下标题及其中⽂SaveZoom InZoom Out100%Show AllQualityPlayLoopRewindForwardBackMovie not loadedAboutPrintShow Redraw RegionsDebuggerUndoCutCopyPasteDeleteSelect AllOpenOpen in new windowCopy linke.标题中不能包含以下词:AdobeMacromediaFlash PlayerSettings3.⽤separatorBefore表⽰指定的菜单项上⽅是否显⽰分隔条。
4.⽤enabled和visible来控制菜单项是否可⽤,是否可见5.监听flash.events.ContextMenuEvent.MENU_ITEM_SELECT来添加菜单项点击事件⼆.定义菜单1.新建菜单var menu:ContextMenu = new ContextMenu();2.插⼊⾃定义菜单项所有的⾃定义菜单项都存放在ContextMenu对象的customItems数组⾥,通过将菜单项加⼊数组来增加菜单项menu.customItems.push(menuitem);注意:⾃定义菜单项不能超过15个。
3.控制内置菜单项⽤hideBuiltInItems()来隐藏菜单中的所有内置菜单项("设置"除外)通过设置builtInItems属性来控制forwardAndBack、loop、play、print、quality、rewind、save 和 zoom菜单项⽤clipboardMenu来指定是否应使⽤剪贴板菜单。
使用AS3来做苹果菜单效果
在这份教程中,我将教你如何使用AS3创建一个像苹果Dock那样的菜单。
我们将创建一个single.as文件,由它来施展魔法,以及扩展它来加入新的功能。
步骤1:创建一个新的ActionScript文件首先创建一个ActionScript文件,保存为“DockItem.as”。
我把文件保存在这个位置c:/macmenu/org/effects/DockItem.as请注意,我们的文档目录(.fla的位置)在c:/macmenu/ 文件夹/org/effects/是DockItem类的包目录。
步骤2:创建一个新的AS3 Flash(.fla)文件创建一个新的ActionScript3 Flash 文件并打开它,现在我们有了两个打开的文件DockItem.as 与这个.fla在根文件夹(DockItem.as在c:/macmenu/org/effects,所以我们的网站根目录是c:/macmenu)/org/effects是DockItem对象的包。
我们把.fla文件保存为c:/macmenu/macmenu.fla.步骤3:导入图标现在,我们在.fla文件中导入或者画一些图标。
我已经从一个Illustraotr文件导入了一些图标,当然你也可以自己画一些,还能加上渐变效果。
步骤4:开始将图标转为元件选择图标并选择顶部菜单“修改”>“转换为元件”。
在弹出的面板中,输入元件名(我取名为Star),并登记注册点。
这里需要定义底部中心为注册点(见下图)。
类名也是Star(请记住你不能使用空格),记得输入org.effects.DockItem 为基类。
另外,请确保将类型设置为MovieClip。
步骤5:将所有图标都转为元件我们能可以有许多我们想要的按钮,所以让我们把所有图标都转为元件。
记得给它们一个名字和一个类名,并且将它们的注册点都设在底部中心,还有就是将org.effects.DockItem设为他们的基类。
【转】as3自定义视频播放器可添加20部影片
4:3画面效果↓
自定义4:3视频播放器代码↓
<div align=center><EMBED height=350 type=application/x-shockwave-flash width=460 src=/upfile/author_id=92&urs=88llbb@&art_id=17455&fn=production.swf FLASHVARS="jb=几部影片&sj=是否随机&bf=是否自动播放&wz1=视频地址1&wz2=视频地址2&wz3=视频地址3&qm1=曲名1&qm2=曲名2&qm3=曲名3&yc1=演唱者1&yc2=演唱者2&yc3=演唱者3" wmode="transparent" invokeurls="false" quality="high" allowScriptAccess="never"></div>
想找一个简洁视频播放器没找着于是自己琢磨着做了一个自定义地址随机播放视频名演唱者等可窗内缩放可拖拉预览可前选后选文字过长自适应并移动鼠标移入画面显示播放控制条鼠标移出画面消失播放控制条16
【转】as3自定义视频播放器可添加20部影片
16:9画面效果↓
自定义16:9视频播放器代码↓
<div align=center><EMBED height=337 type=application/x-shockwave-flash width=600 src=/upfile/author_id=92&urs=88llbb@&art_id=17454&fn=production.swf FLASHVARS="jb=几部影片&sj=是否随机&bf=是否自动播放&wz1=视频地址1&wz2=视频地址2&wz3=视频地址3&qm1=曲名1&qm2=曲名2&qm3=曲名3&yc1=演唱者1&yc2=演唱者2&yc3=演唱者3" wmode="transparent" invokeurls="false" quality="high" allowScriptAccess="never">&↑
AS3下Flash Remoting自定义类的实现
AS3下Flash Remoting自定义类的实现
熊焕演;徐芳
【期刊名称】《电脑知识与技术》
【年(卷),期】2010(006)005
【摘要】Flash技术发展到今天,其语言经历过三个版本,从最简单的实现动画的跳转交互,到如今的大项目的开发.AMF的发展也经历过两个版本,从早期支持AS1.0和AS2.0的AMF0,到现在支持AS3.0的AMF3.该文详细论述了AMF的功能及数据处理过程,并实现简化AMF使用的自定义类.
【总页数】3页(P1196-1198)
【作者】熊焕演;徐芳
【作者单位】江西现代职业技术学院,江西,南昌,330012;江西现代职业技术学院,江西,南昌,330012
【正文语种】中文
【中图分类】TP317
【相关文献】
1.Flash AS3实现雷电飞机射击游戏 [J], 夏敏捷
2.Flash AS3实现推箱子游戏 [J], 夏敏捷;潘惠勇
3.Flash AS3实现5子棋游戏 [J], 张锦歌
4.Flash AS3实现黑白棋游戏 [J], 潘惠勇;夏敏捷
5.Flash AS3实现拼图游戏 [J], 李枫;夏敏捷
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
}
/*当这个类被实例化后,就能绘制出一个圆。可以自行给出半径(radius) 和颜色(color)。如果不给参数
就会使用默认参数:半径为40,颜色为红色。*/
3、新建一个fla文件,保存在任意目录下,文件名任意。选【编辑】菜单下的首选参数 -- 类别 -- ActionScript -- ActionScript 3.0 设置… 打开类路径设置面板 -- 单击面板上部的加号就可以添加新的目录路径作为类路径。路径可以手工填写,也可以点面板上部的瞄准器浏览到路径添加,点确定,这样路径就
package {
public class Example {
private var _id:String;
public function Example( ) {
_id = "Example Class";
}
public function getId( ):String {
this.radius=radius;
this.color=color;
init();
}
public function init():void {
graphics.beginFill(color);
graphics.drawCircle(0,0,radius);
graphics.endFill();
private
该属性只有类实例自身可访问.
public
该属性可以被任何类实例访问(若直接被类访问可设置成static)
protected
该属性只被自身类实例或派生类实例访问。
internal
该属性可被包内的类实例访问。
默认情况下是属性被指定为internal ,除非自己指定修饰符。大多数情况,属性被指定为private或protected。按照习惯约定,private 和protected 声明的属性名称都在前面加上下划线。
你可以取名字叫EmailManager 和BinarySocket- MessageManager, 这是可以的,但是如果你管理成千上万的类这时就很困难了。因此用包可以很好的解决这个问题,即使你有很多相同的类名,只要它们不在同一个包就不会冲突,如把MessageManager 放在net.messaging.email 包另一个放net.messaging.b,这样可以最大限度避免和别人的包名相冲突。
当有多个项目公用一些类,那么这些类直接被放在主包中的子目录中。例如,上面的MessageManager 类放在.messaging.email 和.messaging.binary- socket 包中。
package {
public class Example {
private var _id:String;
public function getId( ):String {
return _id;
}
}
}
按照约定,方法名称的起始字符必须为小写。每个类都有个和自己类名相同的方法,该方法称为构造函数,用它为创建新的实例时进行初始化工作。在ActionScript 3.0 中,所有的构造函数都是public ,构造函数不能有返回值,也不能声明有返回类型。下面的代码声明了构造函数:
return _id;
}
}
}
下面我们编写一个“Ball类”来感受一下,类的创建、保存及路径的设置:
1、 在本地硬盘“E:\”下新建一名为“fbook”的目录,在“fbook”目录下新建“class”目录。
2、打开Flash,新建一个ActionScript 文件,保存在E:\ fbook\class 下,文件名为"Ball.as"。在as文件中输入代码:
package example.subpackage {
}
包是很重要的,它可以避免类名称空间冲突。例如,有两个开发者写了两个类文件都叫MessageManager. 这两个类虽有相同名字,但是完成不同的任务,因此你不能把这两个类放在一起,如果这样做,编译器将不知道调用哪个,一个办法是取个唯一的类名字。
在ActionScript 3 中,类是最基本的编程结构,所以必须先掌握编写类的基础知识。所有的类都必须放在.as文件中,每个as文件里只能定义一个public 类,而且类名要与文件名相同。比如:你的类名为Example ,那么文件名必须为Example.as。
在ActionScript 3.0 中所有的类都必须放在包中。包是对类进行分类的单位,其意义相当于文件系统的目录。包路径相对于classpath(类路径), 默认的类路径就是项目的根目录,因此顶级的包目录就是项目根目录。包声明如下:
package {
import flash.display.Sprite;
public class Ball extends Sprite {
private var radius:Number;
private var color:uint;
public function Ball(radius:Number=40,color:uint=0xff0000) {
设置好了。(如果.as文件和fla文件放在同一目录中不必设置类路径)
4、在属性面板的文档类:填入“Ball”,没有引号,按Ctrl+Enter组合键测试。
package name {
}
如果类定义在顶级包中,那么包名可以不指定,如:
package {
}
当类文件保存在子目录,那么包名就是它的保存目录,例如,文件保存在example目录,那么包这样声明:
package example {
}
如果类文件保存在example 目录的子目录subpackage, 应这样声明:
Flash AS3.0教程:创建自定义类时间:2009-07-31 20:32来源:草根站长 作者:编辑整理 责任编辑: 阿祥 我要投稿
在ActionScript 3 中,类是最基本的编程结构,所以必须先掌握编写类的基础知识。所有的类都必须放在.as文件中,每个as文件里只能定义一个public 类,而且类名要与文件名相同。比如:你的类名为Example ,那么文件名必须为Example.as。 在ActionScript 3.0 中
下一步就是声明类自身:
public class Name {
}
类声明必须在包内。下面的代码在顶级包中定义了叫Example 的类:
package {
public class Example {
}
}
类主体在括号内定义,包括属性,方法。属性就是和类关联的变量,使用var关键字声明他们,属性也有修饰符指定其范围。修饰符有:
看下面的例子:
package {
public class Example {
private var _id:String;
}
}
与类关联的还有方法,你可以使用function关键字像声明函数那样声明方法。和属性一样,方法也有修饰符(public, private, protected, internal)。如果方法被类实例访问可设置为public(直接被类访问则加上static).如果方法只在类内方法则被设置为private 或protected。下面的代码声明一个方法叫getId( ):