AS3.0 实用小知识
- 格式:doc
- 大小:85.00 KB
- 文档页数:20
FlashAS3_0编程题库及答案河南科技⼤学--Flash AS3.0编程1、选择题:19题1、关于Flash CS4中的as3.0代码,下⾯说法正确的是()A.只能写在帧上B.只能写到ASDoc⽂件(.as)中C.可以写在帧上或者ASDoc⽂件(.as)中D.可以写在元件实例上正确答案是: C 你选择的答案是:未选 ×2、下列关于AS3.0,说法不正确的是()A.AS3.0 是⾯向对象的。
B.AS3.0 源于ECMAScript标准C.AS3.0 使⽤虚拟机AVM3来运⾏D.AS3.0 由两个部分组成:核⼼语⾔和Flash Player API正确答案是: C 你选择的答案是:未选 ×3、关于AS3.0代码中的注释,下列说法不正确的是()A.使⽤注释,既可以⽅便⾃⼰阅读,⼜可以让别⼈更好、更快地理解代码B.注释会影响程序的执⾏效率C.既可以使⽤单⾏注释,也可以使⽤多⾏注释D.在调试程序时,注释代码要⽐删除代码有更多的好处正确答案是: B 你选择的答案是:未选 ×4、下列关于trace语句的使⽤,不正确的是()A.trace(hello)B.trace(1)C.trace(true)D.trace(stage)正确答案是: A 你选择的答案是:未选 ×5、下列显⽰对象中,不能⽤来做容器的是()A.图形B.⽂本C.舞台D.影⽚剪辑正确答案是: B 你选择的答案是:未选 ×6、下列关于MainTimeline类的说法,不正确的是()A.MainTimeline类的实例名字为rootB.MainTimeline类在AS3.0中没有公开C.MainTimeline类是静态类,不能动态地添加属性D.MainTimeline类是默认的⽂档类正确答案是: C 你选择的答案是:未选 ×B.mc.xsacle=0.1;C.mc.width=0.1;D.mc.sacle=0.1;正确答案是: A 你选择的答案是:未选 ×8、x = Math.random(), x的取值范围为()A.0 < x < 1B.0 < x <= 1C.0<= x < 1D.0 <= x <= 1正确答案是: C 你选择的答案是:未选 ×9、下列说法哪⼀个是正确的:( )A.int(-0.9)==Math.floor(-0.9)B.int(-0.9)==Math.ceil(-0.9)C.int(-0.9)==Math.round(-0.9)D.没有正确答案正确答案是: B 你选择的答案是:未选 ×10、下⾯哪⼀个不能⽤来做变量名?()A. stuNameB. _abcC. 123aD. XS正确答案是: C 你选择的答案是:未选 ×11、定义变量的形式如var a;则trace(a)的结果为()A.NaNB.0C.nullD.undefined正确答案是: D 你选择的答案是:未选 ×12、有如下代码:const XYZ:int=100;XYZ=200;XYZ++;则trace(XYZ)的结果为()A.100B.200C.201D.系统报错正确答案是: D 你选择的答案是:未选 ×13、下⾯数据类型中属于复杂数据类型的是()A.intB.uintC.ArrayD.Boolean正确答案是: C 你选择的答案是:未选 ×14、有如下代码:D.234正确答案是: D 你选择的答案是:未选 × 15、有如下代码:var i:int=1;var boo:Boolean=i;trace(i==boo);trace(i===boo);则输出的结果是()A.truetrueB.truefalseC.falsetrueD.falsefalse正确答案是: B 你选择的答案是:未选 × 16、有如下代码:var a:int=10;var b:int=20;var m:int;var n:int;m=a++;n=--b;trace(m,n);则输出的结果是()A.10 19B.10 20C.11 19D.11 20正确答案是: A 你选择的答案是:未选 × 17、有如下代码:var num:int=1;if(num=2)trace(num);则输出的结果是()A.0B.1C.2D.⽆输出结果正确答案是: C 你选择的答案是:未选 × 18、有如下代码:var day,n:int;day=6;n=1;while(day>=1){ n=(n+1)*2;正确答案是: B 你选择的答案是:未选 ×19、有如下代码:var i:int;var sum_odd:int=0;var sum_even:int=0;for(i = 1;i<=100;i++){if(i%2==0)sum_even += i;elsesum_odd += i;}trace(sum_odd,sum_even);则输出的结果是()A.2500 2500B.2500 2550C.2550 2500D.2550 2550正确答案是: B 你选择的答案是:未选 ×本次测试成绩:0分河南科技⼤学--Flash AS3.0编程1、选择题:16题1、⾃定义函数要使⽤的关键字是()A.varB.voidC.functionD.const正确答案是: C 你选择的答案是:未选 ×2、要实现Flash player播放器窗⼝⾃动全屏的AS3.0代码是()A.fscommand("fullscreen");B.fscommand("fullscreen",true);C.fscommand("fullscreen","true");D.fscommand("fullscreen","false");正确答案是: C 你选择的答案是:未选 ×3、有如下代码:function maxNum(a:int,b:int,c:int):int{var max:int;if(a>b)max=a;return(max);}var m:int;m=maxNum(23,78,45);trace(m);则输出的结果是()A.23,78,45B.23C.78D.45正确答案是: C 你选择的答案是:未选 ×4、AS3.0中定义函数,表⽰⽆返回值使⽤()A.undefinedB.NaNC.nullD.void正确答案是: D 你选择的答案是:未选 ×5、有如下代码:var a:int=3;var b:int=6;function test(a:int,b:int):void{a++;b++;trace(a,b);}test(a,b);trace(a,b);则输出的结果是()A.3 63 6B.3 64 7C.4 73 6D.4 74 7正确答案是: C 你选择的答案是:未选 ×6、有如下代码:var obj:Object={name:"张三",age:20,dclass:"动漫1班"};function stuInfo(obj1:Object):void{/doc/6a00200a4a7302768e9939fb.html ="李四"; trace(/doc/6a00200a4a7302768e9939fb.html ); }stuInfo(obj);trace(/doc/6a00200a4a7302768e9939fb.html );则输出的结果是()A.张三张三B.张三李四正确答案是: D 你选择的答案是:未选 ×7、数组myArr定义如下:var myArr:Array = [{label:”同意”,data:”yes”},{label:”反对”,data:”no”},{label:”取消”,data:”cancel”}];则trace(myArr[2].data)的结果是()A.yesB.noC.cancelD.以上都不正确正确答案是: C 你选择的答案是:未选 ×8、有如下代码:var arr1:Array=new Array(2);arr1.push("abcd");trace(arr1.length);则输出的结果是()A.1B.2C.3D.4正确答案是: C 你选择的答案是:未选 ×9、有如下代码:var arr1:Array=[1,2,3,4,5];var arr2:Array=[6,7,8];var arr3:Array=arr1.concat(arr2);trace(arr3);则输出的结果是()A.1,2,3,4,5,6,7,8B.1,2,3,4,5C.6,7,8D.6,7,8,1,2,3,4,5正确答案是: A 你选择的答案是:未选 ×10、有如下代码:var arr:Array=[1,2,3,4,5];trace(arr1.join("@"));则输出的结果是()A.@1,2,3,4,5B.1,2,3,4,5@C.@1,2,3,4,5@D.1@2@3@4@5正确答案是: D 你选择的答案是:未选 ×11、有如下代码:var arr1:Array=[1,2,3,4,5];var arr2:Array=arr1.slice(1,2);trace(arr2);则输出的结果是()正确答案是: B 你选择的答案是:未选 ×12、有如下代码:vararr:Array=["MIKE","TOM","JACK","JONE","ECHO","ELLEN"];var pos:int=/doc/6a00200a4a7302768e9939fb.html stIindexOf("ECHO "); trace(pos);则输出的结果是()A.1B.2C.4D.5正确答案是: C 你选择的答案是:未选 ×13、在使⽤sort()⽅法的参数时,不会改变原数组的是 ( )A.Array.RETURNINDEXEDARRAYB.Array.NUMERICC.Array.CASEINSENSITIVED.Array.DESCENDING正确答案是: A 你选择的答案是:未选 ×14、在AS3.0的所有类中,有⼀个类是其它所有类直接或间接的⽗类,该类为()A.Stage类B.MovieClip类C.Event类D.Object类正确答案是: D 你选择的答案是:未选 ×15、AS3.0中类⽂件名的后缀是 ( )A..asB..cssC..xmlD..as3proj正确答案是: A 你选择的答案是:未选 ×16、下⾯关于类的创建,说法不正确的是 ( )A.类必须放在包(package)内,且类必须放在⼀个包中B.⽂件名,类名,类的构造函数名三者必须保持⼀致,包括⼤⼩写C.类名的第⼀个字母必须要⼤写D.所有的..as⽂件都需要在fla⽂件中使⽤正确答案是: C 你选择的答案是:未选 ×2、填空题:2题1、Array对象[15,5,0,10]使⽤sort()⽅法排序后的结果你的答案: ×参考答案:^[0,10,15,5]^^^^^^^^2、var arr:Array = [1,2,3,4];}你的答案: ×参考答案:^4,3^^^^^^^^本次测试成绩:0分Copyright © 2006 All rights reserved 河南科技⼤学--Flash AS3.0编程建议使⽤:800×600以上分辨率IE4.0以上版本浏览器河南科技⼤学--Flash AS3.0编程1、选择题:10题1、类的修饰词中,使⽤哪⼀个修饰词的类可以被其他任何类访问。
as3.0 date用法在AS3.0中,Date类用于处理日期和时间。
它提供了一些方法和属性,用于获取、设置和操作日期和时间。
下面我会从多个角度来介绍Date类的用法。
首先,我们可以使用Date类来获取当前日期和时间。
可以通过创建一个新的Date对象来实现,例如:javascript.var currentDate:Date = new Date();这样就可以得到当前的日期和时间。
其次,Date类提供了一些方法来获取特定的日期和时间信息,比如年、月、日、小时、分钟、秒等。
例如,可以使用getFullYear()方法来获取年份,getMonth()方法来获取月份(注意月份是从0开始计数的,所以实际月份需要加1),getDate()方法来获取日期,getHours()方法来获取小时,getMinutes()方法来获取分钟,getSeconds()方法来获取秒数等等。
另外,Date类还可以用于比较日期和时间。
可以使用getTime()方法来获取自1970年1月1日午夜以来的毫秒数,然后可以比较这些毫秒数来判断日期先后顺序。
除此之外,Date类还提供了一些方法来设置日期和时间。
可以使用setFullYear()、setMonth()、setDate()、setHours()、setMinutes()、setSeconds()等方法来设置特定的日期和时间。
总的来说,AS3.0中的Date类提供了丰富的方法和属性,可以方便地处理日期和时间。
通过这些方法和属性,我们可以获取当前日期和时间,获取特定的日期和时间信息,比较日期和时间,以及设置日期和时间。
希望这些信息能够帮助你更好地理解和使用AS3.0中的Date类。
AS3.0显示编程ActionScript 3.0的显示功能有了很大的革新,原有的显示结构发生了重大的改变。
对于熟悉了ActionScript以前版本中MovieClip影片剪辑控制和使用的AS程序人员来说,这次革新将导致一个新的学习过程。
ActionScript 3.0显示编程的内容主要是关于如何使用ActionScript来生成和控制各种图形、动画等显示对象。
显示对象通常指的是显示在Flash Player舞台上的可视化的对象。
1.显示对象简介显示对象(Display Object),指的是可以在舞台显示的一切对象,包括可以直接看得见的图形、动画、视频、文字等,也包括一些看不见的显示对象容器。
在ActionScript 3.0中,任何的复杂的图形都是由显示对象和显示对象的容器共同构成。
1)AS3.0中显示对象的等级结构编译完成的SWF文件,以最根部的stage(舞台)为基础,展现出不同的显示效果。
利用ActionScript 3.0构建的Flash播放文件都有都有一个由显示对象构成的层次结构,这个结构称为“显示列表”。
这个显示列表按照一定的等级和层次在舞台上显示出来,构成复杂的显示对象。
ActionScript 3.0 支持的显示对象的结构类似于“树状结构”,以舞台为根,SWF文件为干,显示对象为枝叶。
具体结构见图所示。
2)显示对象的种类在ActionScript3.0中,所有的显示对象都属于同一个类:DisplayObject类。
所有的显示对象都是其子类。
本节将对显示对象的种类进行简单的介绍,并且进行简要的分类。
1.显示对象的具体种类2.显示对象分类3)显示列表在前文中已经说到,ActionScript 3.0支持的显示对象的结构类似于“树状结构”,这上面的所有的显示对象和容器,就构成了显示列表。
显示列表是ActionScript 3.0中的一个新概念。
显示列表就是一个显示对象的清单,只要在Flash Player中显示出来的对象,都是该显示列表中的内容。
培训报告目录一、5月24日 (2)1、贝加莱公司概述 (2)2、控制系统产品介绍 (3)二、5月25日 (4)1、Automation Studio 3.0软件工具介绍 (4)2、新建Task任务 (9)3、启用模拟器测试程序 (14)三、5月26日 (16)1、结构文本(ST)(参考贝加莱资料TM246) (16)1.1、ST介绍 (16)1.2、操作符优先级(图19) (16)1.3、数据类型转换 (16)1.4、常用语句 (17)1.4、功能块调用 (21)2、ST语言练习(答案图25) (22)四、5月27日 (24)1、数据存储 (24)2、通讯 (27)2.1、B&R产品CPU之间通讯 (27)2.2、帧通讯。
(27)2.3、OPC通讯。
(28)3、自定义函数库 (34)一、5月24日1、贝加莱公司概述主要内容是贝加莱公司的历史、企业结构、产品线介绍。
贝加莱(B&R)工业自动化有限公司是一家自动化技术领域的领导厂商,总部位于奥地利Eggelsberg,于1979年由Erwin Berneker先生和Josef Rainer先生共同创建。
自成立以来,创新的信念伴随贝加莱不断成长,并引领技术发展的潮流。
今天的贝加莱已经在全球60个国家设立了分支机构,拥有155个办事处。
对技术研发趋势的敏锐洞察力,以及为用户提供集成化高品质方案的不懈追求,贝加莱已成为自动化行业中创新与科技的领先者。
1996年8月,贝加莱在上海成立了服务于中国市场的分公司——贝加莱工业自动化(上海)有限公司。
发展十多年,贝加莱(中国)在国内的机构包括上海总部,北京、广州、济南、西安、成都、沈阳和宁波办事处,上海及各办事处的技术培训中心,以及分布在全国的大学联合实验室。
如今,贝加莱的产品和方案已广泛应用于机械自动化领域,包括包装、印刷、塑料、纺织、食品饮料、机床、半导体、制药等行业;以及过程自动化领域,如电力、冶金、市政、交通、石油、化工和建材等行业。
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。
flash as3语法知识我们在学习一们外语的时候,首要学习他的语法。
而学习一门编程语言,也是如此。
语法是每一种编程语言最基础的东西,例如如何定义变量、使用表达式、进行基本的运算等。
ActionScript 3.0是一种基于ECMA-262规范的 我们在学习一们外语的时候,首要学习他的语法。
而学习一门编程语言,也是如此。
语法是每一种编程语言最基础的东西,例如如何定义变量、使用表达式、进行基本的运算等。
ActionScript 3.0是一种基于ECMA-262规范的脚本语言,其基本语法构成包括:标识符、关键字、数据类型、运算符和分隔符。
这5种元素有着不同的语法含义和组成规则,它们互相配合,共同完成ActionScript 3.0语言的语意表达。
本文将着重介绍ActionScript 3.0中的标识符、关键字、数据类型、运算符和分隔符等语法基础结构,以及ActionScrpt 3.0中的常量、变量等常用知识点,为更深入的学习ActinScript 3.0打下扎实的语法基础。
一、标识符 标识符是什么呢?简单的理解就是我们每定义一个变量,那么这个变量就称之为标识符,在ActionScript3.0中,不能使用关键字和保留字作为标识符。
包括变量名、类名、方法名等。
二、关键字 在ActionScript 3.0中,保留字包括“关键字”,我们不能在代码中将他们用作标识符。
下图列出ActionScript 3.0中的关键字。
详细大家可以查看官方提供的文档,这里我就不一一列出,文章尾我给出了ActionScript 3.0语言和组件参考在线文档的连接,下面是ActinScript 3.0关键字在线文档地址: 三、数据类型 数据是程序的必要组成部分,也是程序处理的对象。
数据类型描述一个数据片段,以及可以对其执行的各种操作。
数据存储在变量中,在创建变量、对象实例和函数定义时,通过使用数据类型类指定要使用的数据的类型。
AS 3.0语言基础================================================第2章ActionScript 3 语言基本元素================================================2.1.2 数据类型概述简单数据类型Boolean(布尔)、int(有符整型)、Number(浮点)、String(字符串)、uint(无符整型)复杂数据类型Array(数组)、Date(日期)、Error(异常)、Function(函数)、RegExp(正则表达)、XML、XMLList2.2.1 变量声明var 变量:类型var 变量:类型= 值;2.3 声明常量const 常量名:类型= 值;2.4 基础数据类型1.布尔值Boolean(初始化为false)2.数字:int uint Numberint 有符号32位整数-2(31次方) - +(2(31次方)-1)uint 无符号32位整数0 - 2(32次方)-1Number 64位浮点能用整数优先用int uint,有正负之分,用int。
只处理整数,用uint,有小数,用Number。
2.4.6 Object及关联数组var 对象:Object = new Object()var 对象:Object = {};2.4.8 Null、NaN、undefined及各自应用对象:变量的默认值数据类型默认值int 0uint 0Number NaNString nullBoolean falseArray nullObject null没声明undefined* undefined注意:必须声明初值,否则容易出错。
2.5 运算符,表达式及运用2.5.11 typeof、is、astypeof,用字符串返回对象类型,格式:typeof(对象)is ,判断操作符左边的对象是否属于右边的类型,返回值为Boolean,格式:对象is 数据类型as ,判断操作符左边的对象是否属于右边的类型,属于则返回数据,不属于则返回null,格式:对象as 数据类型typeof对象类型与返回结果对照表对象类型返回结果Array objectBoolean booleanFunction functionint numberNumber numberObject objectString stringuint numberXML xmlXMLList xml2.5.12 inin ,判断操作符左边的对象是否作为右边对象中的键(Key)或索引,返回值为Boolean比如:var a:Array = ["q","w","e"];trace(2 in a); //数组中有索引2,返回truetrace(3 in a); //数组中没有索引3,返回false2.5.13 delete关键字AS2.0中可以删除任意任意对象的delete关键字,在AS3.0中只能用于删除对象的动态实例属性,非动态属性不能删除。
1.建立一个Flash文件2.插入一个元件命名为Movie1随便在上面画个图形。
3.CTRL+L 将库显示出来4.右键库文件中的Movie1选择属性5.勾上为ActionScript导出6.点击类旁边的笔进行编写元件的类(当然这里的类可以是已经写好的,直接将类的名字填到这里既可)类编写如下1. p ackage {2.3. import flash.display.MovieClip;4. import flash.events.*;5.6. public class ShuBiao extends MovieClip {7.8. var ydX:Number9. public function ShuBiao() {10.11. this.addEventListener(MouseEvent.CLICK,singelclick);12. this.addEventListener(MouseEvent.MOUSE_OVER,singelclick);13. this.addEventListener(MouseEvent.MOUSE_OUT,singelclick);14. // constructor code15. }16. public function singelclick(e){17. this.x+=10;18. }19. }记得类保存的时候名字要和类名一样7.完成元件的设置以后回到场景中编辑场景的属性面板上面的类类编写如下1. p ackage {2.3. import flash.display.MovieClip;4.5.6. public class Stage extends MovieClip {7.8.9. public function Stage() {10. // constructor code11. var obj:MovieClip = new ShuBiao();12. stage.addChild(obj);13. obj.x=50;14. obj.y=200;15. }16. }17.18. }。
【改变输出swf的尺度,背景颜色或帧频】在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">在"Additional compiler arguments"里输入你所需要的命令如想改变背景颜色,请输入: -default-background-color 0xffffff【鼠标坐标】mouseX mouseY【检查变量类型并返回布尔值】is【检查变量类型并返回类型】typeof【检查对象类型并返回该对象】as【是数字但不是有效数字问题】var q ntity:Number = 15 - "rabbits";trace(typeof q ntity); //显示: "number" ,但它是NaN (not a number)trace(q ntity is Number); //trtrace(q ntity != NaN); //false//使用isNaN()函数检测:isNaN(q ntity); //tr//检测变量是否内含有效数字:!isNaN(q ntity); //false【取消默认的严格编译模式】在"Navigator"窗框里右键你的项目>选中"Properties">选中"ActionScript Compiler">取消"Enabel compile-time type checking"选项【基元数据类型和复杂数据类型好比"值类型"和"引用类型"】基元数据类型类似按值传递:var intOne:int = 1;var intTwo:int = 1;trace(intOne == intTwo); //tr【复杂数据类型类似按引用传递】var arrayOne:Array = new Array("a", "b");var arrayTwo:Array = arrayOne;trace(arrayOne == arrayTwo); //tr//-----------------------------------var arrayOne:Array = new Array("a", "b");var arrayTwo:Array = new Array("a", "b");trace(arrayOne == arrayTwo); //false【优化逻辑AND(&&)和OR(||)的小知识】对于逻辑And(&&):除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了.对于逻辑OR(||):除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为tr的表达式放到前面.【Timer类注意事项】不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.【private,protected,internal,p lic访问权限】private:只能在类本身内部访问,按惯例,命名私有成员时以下划线"_"开头;protected:可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线"_"开头;internal:可以由类本身或者相同包内的任何类访问;p lic:可以在类内部访问,也可以由类实例访问,或者声明为static时,可以直接从类访问.【一个函数具有未知个数的参数,用arguments对象或"...(rest)"符号访问它的参数】注意:使用"...(rest)"参数会使arguments对象不可用;private funciton average():void{trace(arguments.length); //输出参数的个数// arguments的类型是:object,但可以像访问数组一样去访问它trace(arguments[1]); //输出第二个参数}private function average(...argu):void{trace(argu[1]); //输出第二个参数,argu参数名是自定义的.}【错误处理try,catch,finally】private function tryError():void{try {trace("测试开始-try");throwError();}catch(errObject:Error) {trace("错误信息:" + errObject.message);trace("测试结束-catch");return;}finally{trace("虽然catch里已经有return方法,但位于return方法后面的finally里的代码依然会被执行.其实无论return方法是在try里,还是catch里,finally里的代码始终会被执行");}trace("前面已经有return了,此处是不会再执行的.除非没有抛出错误,以使catch里的代码没有被执行");}private function throwError():void{throw new Error("抛出错误");}【for...in与for each...in的区别】与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).【命名包路径的小技巧】使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果Example Corp()写了一些ActionScript3.0类,就会把所有类放在com.examplecorp包内(或者com.examplecorp的子包内).如此一来,如果英国有另一家Example Corp()也写了一些ActionScript3.0类,只要使用包uk.co.examplecorp,就可确保唯一性.当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,Example Corp可能有个应用程序名叫WidgetStore.如果WidgetStore应用程序使用一个名为ApplicationManager的类,则此类就应该放在com.examplecorp.widgetstore包内,或者位于该包的子包内.按惯例来说,包名称的开头是小写字母.【隐式的取出方法(getter)和设定方法(setter)】p lic function get count():uint {return _count;}p lic function set count(val:uint):uint {if(val < 100){_count = val;}else {throw Error();}}【确保类是绝不会有子类,使用final】final p lic class Example{}【super关键字的使用】super(); //父类的构造函数,只能在类实例构造函数内部使用super.propertyName; //调用父类的属性,属性需要声明为p lic或protected super.methodName(); //调用父类的方法,方法需要声明为p lic或protected【建立常数,使用关键字const而不是var】static p lic const EXAMPLE:String = "example";【检测播放器版本】Flash.system.Capabilities.version对于8.5版以前的任何Flash Player版本,这种方法都不适用.【判断客户端系统】Flash.system.Capabilities.os【检测播放器类型】Flash.system.Capabilities.playerType可能的值有:"StandAlone",用于独立的Flash Player"External",用于外部的Flash Player或处于测试模式下"PlugIn",用于Flash Player浏览器插件"ActiveX",用于Microsoft Internet Explorer使用的Flash Player ActiveX控件【检测系统语言】ng ge【判断用户是否启用了IME(输入法编辑器)】Flash.system.IME.enabled【检测屏幕的分辨率】Flash.system.Capabilities.screenResolutionXflash.system.Capabilities.screenResolutionY【把弹出窗口居中的算法】X = (舞台宽/2)-(窗口宽/2)Y = (舞台高/2)-(窗口高/2)【控制影片配合Player的方式,包括缩放问题】stage.scaleMode可供选择值:Flash.display.StageScaleMode【舞台的对齐方式】stage.align可供选择值:Flash.display.StageAlign【隐藏Flash Player的右键菜单】stage.showDefaultContextMenu = false;【检测系统是否具有音频功能】Flash.system.Capabilities.hasA io【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】Flash.system.Capabilities.hasMP3【检测播放器能(tr)还是不能(false)播放流式视频】Flash.system.Capabilities.hasStreamingVideo【检测播放器是在支持(tr)嵌入视频的系统上运行,还是在不支持(false)嵌入视频的系统上运行】Flash.system.Capabilities.hasEmbeddedVideo【检测播放器能(tr)还是不能(false)对视频流(如来自Web摄像头的视频流)进行编码】Flash.system.Capabilities.hasVideoEncoder【显示Flash Player中的"安全设置"面板】flash.system.Security.showSettings();可供选择项:flash.system.SecurityPanel【让其它域的.swf访问本域的.swf】在本域的.swf文件里加上:Flash.system.Security.allowDomain()或者使用安全策略文件"crossdomain.XML".在Flash 8以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.system.Security.loadPolicyFile(),指定安全策略文件所在的位置.拒绝任何域的做法是在<cross-domain-policy>标签内什么也不填,安全策略文件也支持通用字符"*":<?xml version="1.0"?><!-- /crossdomain.xml --><cross-domain-policy><allow-Access-from domain="" /><allow-access-from domain="*" /><allow-access-from domain="210.38.196.48" /><allow-access-from domain="*" /></cross-domain-policy>【数字的不同进制之间的转换】parseInt(str:String, radix:uint = 0):Number返回十进制的数,参数radix表示要分析的数字的基数.如果省略radix,就默认为10,除非字符串的开头是"0x","0X"或"0":trace(parseInt("0x12")); //设定radix为16,输出:18trace(parseInt("017")); //设定radix为8,输出:15或者使用Number,uint和int对象的toString(radix)方法.【使用Math.round()对一个数取整,四舍五入】Math.round()trace(Math.round(204.499)); //输出:204trace(Math.round(401.5)); //输出:402【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】trace(Math.floor(204.99)); //输出:204【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加1】trace(Math.ceil(401.01)); //输出:402【产生一个随机数】使用Math.random()产生一个伪随机数n,其中0 <= n < 1【把数字取至最近的小数点位,即指定精确度】1.决定你要取的数字的小数点位数:例如,如果你想把90.337取成90.34,就表示你要取到两位小数点位,也就是说你想取至最近的0.01;2.让输入值除以步骤1所选的数字(此例为0.01);3.使用Math.round()把步骤2所计得的值取成最近的整数;4.把步骤3所得的结果乘以步骤2用于除法的那个值.例如,要把90.337取成两个小数点位数,可以使用:trace(Math.round(90.337/0.01)*0.01); //输出:90.34【把数字取成一个整数的最接近倍数值】例1,这样会把92.5取成5的最近倍数值:trace(Math.round(92.5/5)*5); //输出:95例2,这样会把92.5取成10的最近倍数值:trace(Math.round(92.5/10)*10); //输出:90【在指定数值范围内获得随机数】//可取范围:[min, max]private function randRange(min:Number, max:Number):Number {var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;return randomNum;}应用例子:模拟投银币,即希望得到随机布尔值(tr或false): randRange(0, 1);模拟投骰子,即希望得到随机六个值: randRange(1, 6);为避免被缓存而需要产生一个独一无二的数字追加在URL尾端,通常最佳方法是取得当前毫秒数.【弧度(radian)与度数(degree)之间的转换】从弧度转为度数: degrees = radians * 180 / Math.PI从度数转为弧度: radians = degrees * Math.PI / 180【计算两点之间的距离】勾股定理: c2 = a2 + b2假设有两个影片剪辑mc1和mc2,则它们两点间的距离c为:var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x, 2) + Math.pow(mc1.y - mc2.y, 2));【模拟圆周运动】已知圆心o(x0, y0),半径r和弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * r);y = y0 + (Math.sin(angle) * r);注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.【模拟椭圆运动】已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.cos(angle) * a);y = y0 + (Math.sin(angle) * b);【华氏温度和摄氏温度之间的转换】华氏温度=摄氏度数* 9 / 5 + 32摄氏温度= (华氏度数- 32) * 5 /9【公斤与磅之间的转换】公斤=磅* 2.2磅=公斤/ 2.2【向数组尾端添加元素】var array:Array = new Array();array.push("a", "b");//向数组尾端添加单一元素也可以这样:array[array.length] = "c";//如果以索引设定的元素不存在,数组本身会自动扩展以包含足够的元素数目.介于中间的元素会被设为undefined:array[5] = "e";trace(array[4]); //输出: undefined【向数组开端添加元素】var array:Array = ["a", "b"];array.unshift("c", "d");trace(array); //输出: c,d,a,b【删除数组中第一个元素并返回该元素,使用shift()方法】var letters:Array = new Array("a", "b", "c");var firstLetter:String = letters.shift();trace(letters); //输出: b,ctrace(firstLetter); //输出: a【删除数组中最后一个元素并返回该元素的值,使用pop()方法】var letters:Array = new Array("a", "b", "c");trace(letters); //输出: a,b,cvar letter:String = letters.pop();trace(letters); //输出: a,btrace(letter); //输出: c【删除数组中的元素,给数组添加新元素并返回删除的元素,使用splice()方法】splice(startIndex:int, deleteCount:uint, ... vals):ArraystartIndex:一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引; deleteCount:一个整数,它指定要删除的元素数量;... vals:用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由startIndex参数指定的位置.【查找数组中第一个相匹配的元素】var array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];var match:String = "b";for(var i:int = 0; i < array.length; i++) {if(array[i] == match) {trace("Element with index " + i + " found to match " + match);//输出: Element with index 1 found to match bbreak;}}【查找数组中最后一个相匹配的元素】var array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];var match:String = "b";for(var i:int = array.length - 1; i >= 0; i--) {if(array[i] == match) {trace("Element with index " + i + " found to match " + match);//输出: Element with index 5 found to match bbreak;}}【把字符串转成数组】使用String.split()方法:var list:String = "I am YoungBoy.";var words:Array = list.split(" "); //以空格作为分隔符将字符串切割trace(words); //输出: I,am,YoungBoy.【把数组转成字符串】使用String.join()方法:var myArr:Array = new Array("one", "two", "three");var myStr:String = myArr.join(" and ");trace(myArr); //输出: one,two,threetrace(myStr); //输出: one and two and three【使用对象数组处理相关数据】var cars:Array = new Array();cars.push({make:"Mike", year:1997, color:"bl"});cars.push({make:"Kelly", year:1986, color:"red"});for(var i:int = 0; i < cars.length; i++) {trace(cars[i].make + " - " + cars[i].year + " - " + cars[i].color); }//输出:// Mike - 1997 - bl// Kelly - 1986 - red【在数组中获取最小或最大值】var scores:Array = [10, 4, 15, 8];scores.sort(Array.NUMERIC);trace("Minimum: " + scores[0]);trace("Maximum: " + scores[scores.length - 1]);【使用for ... in语句读取关联数组元素】var myObject:Object = new Object(); = "YoungBoy";myObject.age = 20;for(var i:String in myObject) {trace(i + ": " + myObject[i]);}//输出: name: YoungBoy// age: 20注意: for ... in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内.【AVM(ActionScript Virt l Machine,虚拟机)和渲染引擎(Rendering Engine)】AVM负责执行ActionScript程序,而渲染引擎则是把对象绘制在显示器上.【指出容器的显示清单中有多少显示对象】每个容器都有numChildren属性.【把项目新增至显示清单】addChild(child:DisplayObject)addChildAt(child:DisplayObject, index:int)index:添加该子项的索引位置.如果指定当前占用的索引位置,则该位置以及所有更高位置上的子对象会在子级列表中上移一个位置.【从显示清单中移除项目】removeChild(child:DisplayObject)removeChildAt(index:int)index:要删除的DisplayObject的子索引,该子项之上的任何显示对象的索引位置都减去1.如果想移除窗口所有子元件,可以结合removeChildAt(),numChildren属性以及for循环.因为每次一个子元件被移除时,索引位置都会变化,所以,有两种方法可以处理所有子元件的移除:1.总是移除位置0的子元件;2.倒过来移除子元件,也就是从尾端开始.【更改现有子项在显示对象容器中的位置】setChildIndex(child:DisplayObject, index:int):void可能用到的方法:返回DisplayObject的child实例的索引位置: getChildIndex(child:DisplayObject):int返回位于指定索引处的子显示对象实例: getChildAt(index:int):DisplayObject注意:当子元件移到低于它现在所在位置的索引时,那么,从标的索引起,直到子元件索引前面的那个索引的所有子元件都会令其索引增加1,而该子元件就会指定至标的索引.当子元件移到较高索引时,从该子元件索引之上的那个索引起,直到标的索引的所有子元件都会令其索引往下减1,而该子元件就会指定至标的索引值.【关于TextField以垂直方式把文字摆在按钮表面中心点的小技巧】textField.y = (_height - textField.textHeight) / 2;textField.y -= 2; //减2个像素以调整偏移量【外部.swf影片载入和互动】1.监听init事件;2.透过content属性存取所载入的影片.当所载入的影片做好足够的初始化工作,使其方法和属性可以接受互动时,init事件就会被发起.只有在载入器发起init事件后,才能控制影片.所载入的影片还没初始化就试着与它互动,是会产生执行期间错误的._loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit); //当载入的.swf的属性和方法可用时_loader.load(new URLReqst("ExternalMovie.swf"));private function handleInit(event:Event):void {var movie:* = _loader.content;trace(movie.getColor());movie.setColor(0xFF0000);}【TextField有两种类型:动态(dynamic)和输入(input),默认值为动态.改变TextField类型方法】field.type = TextFieldType.INPUT; //selectable属性默认值为trFlash.text.TextFieldType.INPUT和flash.text.TextFieldType.DYNAMIC【过滤文字输入】TextField.restrict = "此处为可输入的内容";field.restrict = "^此处为禁止输入的内容";restrict属性支持一些类似正则表达式的样式:field.restrict = "a-zA-z"; //只允许大小字母field.restrict = "a-zA-z "; //只允许字母和空格field.restrict = "0-9"; //只允许数字field.restrict = "^abcdefg"; //除了小写字母abcdefg不允许外,其它都允许field.restrict = "^a-z"; //所有小写字母都不允许,但是,其它内容都允许,包括大写字母field.restrict = "0-9^5"; //只允许数字,但5例外让restrict字符包含具有特殊意义的字母(例如-和^):field.restrict = "0-9\\-"; //允许数字和破折号field.restrict = "0-9\\^"; //允许数字和^field.restrict = "0-9\\\\"; //允许数字和反斜杠你也可以使用Unicode转义序列,指定允许的内容.例如:field.restrict = "^\";注意:ActionScript有区分大小写的,如果restrict属性设为abc,允许字母的大写形式(A,B和C)输入时会变成小写对待形式(a,b和c),反之亦然.restrict属性只影响用户可以输入的内容,脚本可将任何文本放入文本字段中.【设定输入框的最大长度】TextField.maxChars:int【向TextField追加内容】TextField.appendText(text:String):void与通过对text属性使用加法赋值来连接两个字符串(例如field.text += moreText)相比,此方法的效率更高.【显示HTML格式的文字】TextField.htmlText = "<b>Html text</b>";支持的HTML标签集有: <b>,<i>,<u>,<font>(有face,size以及color属性),<p>,<br>,<a>,<li>,<img>以及<textformat>(有leftmargin,rightmargin,blockindent,indent,leading以及tabstops属性,相应于TextFormat类的同名属性)【缩减空白】TextField.condenseWhite = tr;删除具有HTML文本的文本字段中的额外空白(空格,换行符等),如同多数HTML浏览器所做的那样.注意:在设置htmlText属性之前设置condenseWhite属性【自动大小调整和对齐】TextField.autoSize = TextFieldAutoSize.LEFT;可选之值:Flash.text.TextFieldAutoSize.CENTERflash.text.TextFieldAutoSize.LEFTflash.text.TextFieldAutoSize.NONEflash.text.TextFieldAutoSize.RIGHT【指示文本字段是否自动换行】TextField.wordWrap = tr; //自动换行【用程序手段滚动文字】水平方向以像素为单位,而垂直方向以行做单位:scrollV:指出文字框可见区域的最顶行,可读写;bottomScrollV:指出文字框内最底端可见行,只读;maxScrollV: scrollV的最大值,只读;numLines:定义多行文本字段中的文本行数,只读;TextField.scrollV = field.maxScrollV; //滚动到最后一页【响应滚动事件】field.addEventListener(Event.SCROLL, onTextScroll);【样式化文字的方法】1.使用HTML标签进行样式化;2.使用TextFormat对象;3.使用CSS.例如: HTML是用<font>标签,TextFormat对象是设定font属性,而CSS是使用font-family 属性的.受支持的层叠样式表(CSS)属性和值,及其相应的ActionScript属性名称(小括号内):color(color),display(display),font-family(fontFamily),font-size(fontSize),font-style(fontStyle), font-weight(fontWeight),kerning(kerning),leading(leading),letter-spacing(letterSpacing),mar gin-left(marginLeft),margin-right(marginRight),text-align(textAlign),text-decoration(textDe coration),text-indent(textIndent)受支持的HTML实体: <(小于号: <), >(大于号: >), &(和: &), "(双引号: "), '(撇号,单引号: ')其中样式对象的两种写法:写法一:var sampleStyle:Object = new Object();sampleStyle.color = "#FFFFFF";sampleStyle.textAlign = "center";css.setStyle(".sample", sampleStyle);写法二:var sampleStyle:Object = {color: "#FFFFFF", textAlign: "center"};css.setStyle(".sample", sampleStyle);【对用户输入的文字进行样式化】使用defaultTextFormat属性,样式会施加至用户键入输入框的文字身上:var formatter:TextFormat = new TextFormat();formatter.color = 0x0000FF; //把文字变成蓝色field.defaultTextFormat = formatter;【对现有文字的一部分进行样式化】TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int =-1):void【设定文字框的字体】例子:HTML: field.htmlText = "<font face='Arial'>Formatted text</font>";TextFormat: formatter.font = "Arial";CSS: P{ font-family: Arial; }也可以使用以逗号隔开的字体清单: formatter.font = "Arial, Verdana, Helvetica";注意:字体和字体群组不同.字体群组有三种: _sans,_serif以及_typewriter._sans群组一般就是指Arial或Helvetica这种字体;_serif群组一般就是指Times或Times New Roman这种字体;_typewriter群组一般就是指Courier或Courier New这种字体.【嵌入字体】使用[Embed]后设标签.[Embed]后设标签应该出现在ActionScript文件中,处于类宣告之外.你可以内嵌TrType字体或系统字体.内嵌Trype字体时的语法:[Embed(source="pathToTtfFile", fontName="FontName",mimeType="application/x-font-trtype")]pathToTtfFile: ttf文件的路径,TrType字体的路径可以是相对的,也可以是绝对的; FontName:字体名称;内嵌系统字体的语法:[Embed(systemFont="Times New Roman", fontName="Times New Roman",mimeType="application/x-font-trtype")]fontName:以相同名称作为实际系统字体名称.注意:在使用嵌入字体时,要把TextField的embedFonts属性设为tr,这样TextField只能用内嵌字体了.如果你试着替embedFonts设为tr的TextField使用设备字体,什么都不会显示.如果embedFonts设为tr,就无法指定以逗号相隔的字体清单.【建立可以旋转的文字】使用内嵌字体.当你旋转文字框时,设备字体就会消失.【显示Unicode文字】1.从外部来源载入Unicode文字;2.假如你的编辑器支持Unicode(如Flex Builder),则可以直接在ActionScript程序中使用该字符;3.使用Unicode转义字符,ActionScript里所有Unicode转义字符都以\u开头,后面再跟四位十六进制数字.注意:如果你想取得Unicode字符,在Windows下使用:开始>所有程序>附件>系统工具>字符映射表.【把Flash Player的焦点带给文字框】stage.focus = field;把焦点移除:stage.focus = null;注意:当.swf文件首次载入至网页浏览器时,并没有焦点.因此,以程序的方式把焦点指定给Flash应用程序的一个元素前,必须先把焦点移至Flash Player.【以ActionScript选取文字】使用TextField.setSelection(beginIndex:int, endIndex:int):void为了可以正常选取文字,文字框必须具有焦点:stage.focus = field; //把焦点设给文字框field.text = "This is example text"; //设定文字field.setSelection(0, 4); //把"This"这个单词以高亮显示使用只读的selectionBeginIndex和selectionEndIndex属性访问所选取的字符范围的索引.【在文字内设定安插点(游标位置)并访问游标位置的索引值】可以使用TextField.setSelection()把起始和结尾的索引参数都设成相同值,在文字内设定游标位置(假设具有焦点):field.setSelection(0, 0); //在第一个字符前摆放安插点trace(field.caretIndex); //输出游标位置的索引值【当文本字段受到选取或取消选取时给予响应】获得焦点时: FocusEvent.FOCUS_IN失去焦点时: FocusEvent.FOCUS_OUT通过键盘(Tab键)把焦点移除时: FocusEvent.KEY_FOCUS_CHANGE通过鼠标把焦点移除时: FocusEvent.MOUSE_FOCUS_CHANGEFocusEvent类有一个relatedObject属性.就FOCUS_IN事件而言,relatedObject属性是刚才拥有焦点的对象的引用地址;对于FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject属性是刚接收到焦点的对象的引用地址. FOCUS_IN和FOCUS_OUT事件都是在焦点改变后发生的,所以两者都是不可取消的事件.对于KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消默认行为:field.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus);private function onKeyFocus(event:FocusEvent):void {if(field.text == "") {event.preventDefault(); //当field没有任何文字前,不允许使用Tab键把焦点移除}//event.relatedObject就是刚才拥有焦点的对象的引用地址,即下一个获得焦点的对象的引用地址}。