AS3及Flex的百条常用知识
- 格式:doc
- 大小:79.50 KB
- 文档页数:16
AS3方法和技巧1.改变影片的帧频2.类方法的作用域和类绑定3.Graphics对象和绘图接口(API)4.新的变量类型5.显示对象6.新的引入指令7.唯一的类变量8.新的鼠标移动事件1. 改变影片的帧频在AS3中,充许通过Stage类动态地改变影片的帧频.每一个Sprite或者MovieClip实例都有一个stage属性,这个属性关联到一个Stage对象.可以通设置Stage对象的frameRate属性的值来调整影片播放时的帧频.frameRate值的大小范围为0.01至1000.//改变帧频为12帧/sstage.frameRate=12;2.类方法的作用域和类绑定ActionScript 3 是完全基于类的,当你创建了一个类的时候,你也创建了与这个类相关的变量和函数(方法)以及类的实例,和ActionScript 2不同的是,ActionScript 3.0 中的方法类在的范围内调用. 即使函数被绑定给其它对象,然后通过这个对象调用函数,这个函数的调用范围仍然是函数所在的类,和Function.call和Function.applye用法一样.package {import flash.display.Sprite;public class ClassScope extends Sprite {public function ClassScope() {traceThis(); // "Class Instance"var obj:Object = new Object();obj.traceThis = traceThis;obj.traceThis(); // "Class Instance"traceThis.call(new Sprite()); // "Class Instance"}public override function toString():String {return "Class Instance";}public function traceThis():void {trace(this);}}}注:as2时代常用的Delegate可以不用了。
1、as2与as3.的最主要区别是什么?2、as3.0垃圾回收器是如何工作的3、flex和后台语言是如何交互的?4、请说下你理解AS3的事件机制是什么机制?你认为正确的就可以说出来?5、请问addEventListener有几个参数,说明各个参数的含义6、请问你知道loader,URLLoader,URLStream这个三种动态加载资源的具体使用场合,以及有什么区别7、有三种基本数字类型:number, int, 和uint 请问有什么区别.具体说一下.8、请问undefined 、null和NaN是否一样,如果不一样能否说出其中的区别呢?9、请问AS与JS通讯,应该怎样实现?10、请问在清除对象时,哪些情况会因该对象可达而导致其无法清除11、请问自定义事件怎样实现,请写出具体的实现方式。
12、请问帧监听与Timer监听有什么区别?在极端情况(性能消耗严重)下,怎样精确的保证1秒间隔监听13、请问用什么办法解决安全域的问题?如果你不知道安全域的问题的话,可以在本机中绑定一下图片,然后再放到服务器上,就会出现此问题了.14、Math.round( ),Math.floor( ) 和Math.ceil( ) 三个方法都是四舍五入,请问有什么区别?15、如果发生内存泄露,你是如何解决的?16、flash与flex是如何协调开发的?17、使用Flex Bulider3如何跟踪程序?18、as3怎样连接数据库??19、什么是游戏引擎和对他的认识20、substring( ),substr( ), slice(),请说下3种解析字符串的不同之处,以及适用场合?21、AS3 中有那些基本数据类型?有那些复杂数据类型?他们的默认值是什么?22、怎么样转换数组为字符串,怎么样将字符串转化为数组?23、什么是OOP?OOP有那些特征简要说明?24、谈谈你对面向对象的理解25、谈谈对A*寻路算法的理解26、如何把MouseEvent 的localX 和localY 属性转化成全局坐标?27、请问知道层级的概念嘛?如果知道请问怎么样交换2个组件的层级呢?28、请问Flash重绘机制是怎样的?如何保证尽量少的大规模重绘?29、请问在移动位图和矢量图的过程中,两者在消耗CPU方面的差异。
Flex3.0学习笔记总结Flex 3.0 布局控件, 样式(css), 皮肤(skin)介绍演示Flex 3.0 中的布局控件的应用,样式和皮肤的应用∙布局控件 - Flex 中常用的布局控件一览∙样式 - 通过css 控制Flex 中各个控件的样式∙皮肤 - 使用Flash 开发的swf 做控件的皮肤在线DEMO/webabcd/archive/2009/11/09/1598980.html1、布局控件一览Layout.mxml<?xml version="1.0" encoding="utf-8"?><mx:Panel xmlns:mx="/2006/mxml" layout="absolute"title="Layout 常用布局控件一览" width="476" height="427"><mx:Script><![CDATA[import mx.controls.Alert;private function submitForm(e:MouseEvent):void{Alert.show("Item1: " + item1.text, "Alert框");}]]></mx:Script><!--HBox - 水平线性布局VBox - 垂直线性布局--><mx:HBox x="10" y="10" width="438" horizontalGap="50" borderThickness="1 " borderStyle="solid"><mx:Label text="HBox - Label1"/><mx:Label text="HBox - Label2"/></mx:HBox><!--HDividedBox - 在 HBox 的基础上,以垂直方向显示分隔条VDividedBox - 在 VBox 的基础上,以水平方向显示分隔条--><mx:HDividedBox x="10" y="36" width="438" borderThickness="1" borderStyl e="solid"><mx:Label text="HDividedBox - Label1"/><mx:Label text="HDividedBox - Label2"/></mx:HDividedBox><!--Panel - 面板。
本文由chengxunfendou贡献doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
一名优秀的 Flex 开发者需要知道的 10 样东西样东西要想成为一名优秀的 Flex 编程人员,单单知道怎么样去使用 Flex 内建的容器和组件是不够的,而且是远远不够。
下面是我对这个问题的一些看法……并且给出了一些资源和关键字,你可以通过 Google 轻易地找到这些关键字。
1、面向对象编程(OOP) 、面向对象编程ActionScript 3 是 Flex 的基石,它是一个完全面向对象的语言。
尽管面向对象这个概念并不是很好理解,但是面向对象编程是学习的 Flex 的一个前提条件。
如果你之前有面向对象编程(Java, C#, Ruby 等)的经验的话,那么你就可以很快入门。
如果没有的话,那么你须要迟早找本 OOP 的书籍来学一下。
深入浅出 Java 使用 ActionScript 3.0 进行面向对象编程注意:有些人可能会问 - “那么设计模式呢?”让我们一步一步来,好吗?你们自己先学一下类和对象、接口、继承、组合、多态、封装等。
只有学完这些之后你才可以去学习设计模式。
事实上,如果我要写一篇名为“一名伟大的 Flex 开发者须要知道的 10 个内容”的文章话,那么设计模式将会是第一个。
2、ActionScript/MXML 、ActionScript 是与 MXML 一起配合来开发 Flex 应用程序的。
MXML 是一种用 XML 写成的基于标签的声明性语言。
每一个标签都映射到一个与之相对应的 ActionScript 类。
MXML 主要是用来对用户界面进行布局,而 ActionScript 则用来实现业务逻辑。
当然存在例外的情况。
Flex Framework 包括上百个 ActionScript 类和接口来帮助你开发 Flex 应用程序。
你对 ActionScript 以及 MXML 的熟练程度直接影响到你的技术水平。
Flex3基础知识菜花目录Flex3基础知识 (1)介绍、编译: (1)第一部分:AS3基本语法 (3)基本数据类型 (3)数组:复杂数据类型,有序的数据集合。
(3)String类型 (6)函数 (6)变量 (6)类 (6)接口(与Java相似) (7)继承(与Java相似) (7)第二部分:事件 (7)事件机制 (7)第三部分:容器与组件 (10)容器定位与布局: (10)导航容器: (11)第四部分:数据绑定 (11)第五部分:验证 (12)第六部分:控制管理 (12)第七部分:外部数据交互 (16)第八部分:Flash Player的安全机制 (17)第九部分:工具 (17)第十部分:数据模型 (19)第十一部分:样式与皮肤 (20)第十二部分:高级组件开发 (20)第十三部分:实例 (20)介绍、编译:Flex=ActionScript+mxml;Mxml基于xml之上的实现,与jsp和servelt相似,jsp首先会被容器先转换成servlet文件;同样,mxml文件也会先被转换成ActionScript文件,再进行加载。
Mxml的方式与html相似。
ActionScript类似Java,为面向对象语言,ActionScript 的核心底层遵循ECMA-262标准协议,与javascript一致。
Mxml文件会被转换为两个文件:一是mxml文件有部分转换成ActionScript脚本。
二是mxml文件按文件名被转换成对应名称的AS类。
Flex工程src目录下的文件也会编译到swf文件中,还有flex的架包。
第一部分:AS3基本语法基本数据类型1.Boolean2.Int3.Null:只有一个值null,是String和复杂类型(包括Object类)的默认值。
4.Number:最大值Number.MAX_VALUE和最小值Number.MIN_VALUE。
5.String:16位字符序列,内部存储为Unicode字符,使用UTF-16格式。
AS3 常用英文单词大全整个单词大全的排列规律:特殊单词→关键字(语法关键字)→顶级类(顶级全局函数)→重要类→属性→方法→其他常用单词。
AS(ActionScript)动作脚本Flash 的动作脚本语言,API(Application Programming Interface)程序接口通常指的是程序对外部的接口,author(@author)作者ASDoc 标签,在注释中用于记录作者的字abstract 抽象关键字,用于定义抽象类,AS3 暂时不支持as 如运算符,如果一个对象属于一种类型,则返回对象,不属于返回nullarguments(rest)参数顶级类、属性名,传入的参数集合,rest 是自定义的参数集合Array 数组顶级类,对象的集合alpha 透明度属性名,用于表示显示对象的透明度,常在与透明度相关的类、属性和方法中出现addEventListener 注册侦听器方法名,用于注册事件的侦听器addChild 添加显示列表方法名,将显示对象添加到显示列表最后面。
与之相类似的方法有addChildAt,将显示对象添加到显示列表最前面。
与之对应的方法有removeChild、removeChildAt,删除显示对象appendText 追加文本方法名,在文本框中追加文本,比“+”号要高效很多appendChild 添加子元素方法名,操作XML,在子元素列表之后添加元素。
与之对应的方法prependChildaccessibility 辅助常在与辅助相关的类、属性和方法中出现Async(Asynchronous)异步常在异步操作相关的类、属性和方法中出现break 打破、结束关键字,用于结束循环Boolean 布尔顶级类,表示真假ByteArray 深复制重要类,可以将数组进行深复制,如果数组元素都是基元类型,则没有必要用这个Bitmap 位图重要类,用于显示位图。
常在与位图相关的其他类、属性和方法中出现BitmapData 位图像素信息重要类,用于储存位图的像素信息,和一些关于像素信息的操作background是否具有背景颜色属性名,设置文本框是否具有背景颜色backgroundColor 背景颜色属性名,设置文本框的背景颜色border 是否具有边框颜色属性名,设置文本框是否具有边框颜色borderColor 边框颜色属性名,设置文本框的边框颜色beginFill 单一颜色填充方法名,用单一颜色填充绘制的对象beginGradientFill 渐变填充方法名,用渐变填充绘制的对象beginBitmapFill 位图填充方法名,用位图填充绘制的对象blue 蓝色常在与颜色相关的类、属性和方法中出现class 类关键字,重要类,用于定义类,类是OOP 思想的核心const 常量关键字,引用无法更改的变量continue 继续关键字,结束本轮循环cacheAsBitamp 位图缓存属性名,用于打开或关闭位图缓存功能content 内容(加载对象)属性名,持有的引用指向Loader 加载的内容currentTarget 侦听对象属性名,持有指向注册侦听器的容器的引用charCode 键控代码属性名,记录按键对应的字符代码。
FLEX AS3 做地图滑动以及元件动态加载1.总结目的前段时间开发Flash 游戏,游戏中需要动态load地图,并且根据元件的数据,重复load 相同的地图,根据鼠标停留在不同的按钮上地图发生相应的滚动。
由于素材都是从网络上找的所以效果比较难看,美工把图片设计出来放上去就可以用了。
2.开发流程2.1. 地图加载1)首先我们找了一张图片在flash cs3 中做成flex元件。
元件类名:MapBackGround。
在flex 开发工具中创建一个MapSlide.as 的类,继承Canvas。
因为我们最终要放入到flex容器中,所以必须继承Canvas。
编写代码如下:mc = new Canvas() 是指地图的装在容器,以为我们会根据地图上需要显示元件的数量决定地图的重复次数。
var window:Rectangle = new Rectangle(0, 0, 500, 400) 区域对象,主要是设置一个矩形区域的坐标,已经高度和宽度。
地图肯定是大于我们屏幕上显示区域的大小,我们就需要通过设置Rectangle ,改变显示地图的大小已经坐标。
Rectangle 构造方法里面有4个参数,第一个是X坐标,第二个是Y坐标,设置这两个参数,控制地图的X,Y坐标和屏幕地图容器的左上角对其。
第三个是WIDTH,第四个是HEIGHT,这两个参数主要控制地图容器的宽度和高度。
mc.scrollRect = window; 这一句就是指:把矩形区域设置成MC 容器(地图容器)。
var map:MapBackGround = new MapBackGround(); 创建一个地图对象,这个地图对象上面已经提到,是通过flash 创建的flex元件。
2.2. 地图上元件加载1)游戏开发中,许多时候,我们需要在地图中加载其他的元素。
House 指用户falsh cs3所作的flex元件方法参数mc:加载房屋元件的容器x,y:放置房屋元件的坐标2.3. 地图重复load1)确定地图根据什么进行重复,我本次实例是,我会根据元件房屋的数量进行重复地图。
AS3及Flex的百条常用知识(一)【改变输出sw f的尺度,背景颜色或帧频】在"Nav igator"窗框里右键你的项目>选中"Properties">选中"ActionScript. C ompiler">在"Additional c ompiler arguments"里输入你所需要的命令如想改变背景颜色,请输入: -default-bac k ground-color 0x ffffff【鼠标坐标】mouseX mous eY【检查变量类型并返回布尔值】is【检查变量类型并返回类型】typeof【检查对象类型并返回该对象】as【是数字但不是有效数字问题】v ar quantity:Number = 15 - "rabbits";trace(ty peof quantity); //显示: "number" , 但它是NaN (not a number)trace(quantity is Number); //truetrace(quantity != NaN); //false//使用isNaN()函数检测:isNaN(quantity); //true//检测变量是否内含有效数字:!isNaN(quantity); //false【取消默认的严格编译模式】在"Nav igator"窗框里右键你的项目>选中"Properties">选中"ActionScript. C ompiler">取消"Enabel compile-time ty pe chec k ing"选项【基元数据类型和复杂数据类型好比"值类型"和"引用类型"】基元数据类型类似按值传递:v ar i ntOne:int = 1;v ar i ntTwo:int = 1;trace(intOne == intT wo); //true【复杂数据类型类似按引用传递】v ar array One:Array = new Array("a", "b");v ar array Two:Array = arrayOne;trace(array One == array T wo); //true//-----------------------------------v ar array One:Array = new Array("a", "b");v ar array Two:Array = new Array("a", "b");trace(array One == array T wo); //false【优化逻辑AND(&&)和OR(||)的小知识】对于逻辑And(&&):除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了.对于逻辑OR(||):除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.总结:使用逻辑AND(&&)时,把结果最可能为false的表达式放到前面;使用逻辑OR(||)时,把结果最可能为true的表达式放到前面.【Timer类注意事项】不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.【private,protected,internal,public访问权限】priv ate:只能在类本身内部访问,按惯例,命名私有成员时以下划线"_"开头;protected:可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线"_"开头;internal:可以由类本身或者相同包内的任何类访问;public:可以在类内部访问,也可以由类实例访问,或者声明为static时,可以直接从类访问.【一个函数具有未知个数的参数,用arguments对象或"...(rest)"符号访问它的参数】注意:使用"...(rest)"参数会使arguments 对象不可用;priv ate funciton av er age():v oi d{trace(arguments.l ength); //输出参数的个数// arguments的类型是:object,但可以像访问数组一样去访问它trace(arguments[1]); //输出第二个参数}priv ate func tion av er age(...argu):v oid{trace(argu[1]); //输出第二个参数,argu参数名是自定义的.}【错误处理try,catch,finally】priv ate func tion tryError():v oid{try {trace("测试开始-try");throwError();}catch(errObject:Error) {trace("错误信息:" + errObject.message);trace("测试结束-catch");return;}finally{trace("虽然catch里已经有return方法,但位于return方法后面的fi nally里的代码依然会被执行.其实无论return方法是在tr y里,还是catc h里,finally里的代码始终会被执行");}trace("前面已经有return了,此处是不会再执行的.除非没有抛出错误,以使catch里的代码没有被执行");}priv ate func tion throwError():void{throw new Error("抛出错误");}【for...in与for each...in的区别】与for...in循环不同的是,for each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).【命名包路径的小技巧】使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果Ex ample Corp(examplecor )写了一些ActionScript3.0类,就会把所有类放在c om.ex amplecorp包内(或者c om.ex amplecorp的子包内).如此一来,如果英国有另一家Ex ample Corp(examplec )也写了一些ActionScript3.0类,只要使用包uk.co.ex ampl ecorp,就可确保唯一性.当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,Example Corp可能有个应用程序名叫WidgetStor e.如果WidgetStore应用程序使用一个名为Applicati onManager的类,则此类就应该放在com.ex ampl ecorp.widgetstore包内,或者位于该包的子包内.按惯例来说,包名称的开头是小写字母.【隐式的取出方法(getter)和设定方法(setter)】public functi on get count():ui nt {return _count;}public functi on s et c ount(v alue:ui nt):uint {if(v alue < 100){_count = value;}else {throw Error();}}【确保类是绝不会有子类,使用final】final public class Ex ampl e{}【super关键字的使用】super(); //父类的构造函数,只能在类实例构造函数内部使用super.property Name; //调用父类的属性,属性需要声明为public或protec ted super.methodName(); //调用父类的方法,方法需要声明为public或protected 【建立常数,使用关键字const而不是var】static public const EXAMPLE:String = "ex ampl e";【检测播放器版本】flash.s y stem.Capabilities.version对于8.5版以前的任何Flas h Pl ay er版本,这种方法都不适用.【判断客户端系统】flash.s y stem.Capabilities.os【检测播放器类型】flash.s y stem.Capabilities.play erT y pe可能的值有:"StandAlone",用于独立的Flas h Player"Ex ternal",用于外部的Flas h Player 或处于测试模式下"PlugIn",用于Flash Play er 浏览器插件"ActiveX",用于Microsoft Internet Explorer 使用的Flash Player Acti v eX 控件【检测系统语言】flash.s y stem.Capabilities.l anguage【判断用户是否启用了IME(输入法编辑器)】flash.s y stem.IME.enabled【检测屏幕的分辨率】flash.s y stem.Capabilities.screenR esoluti onXflash.s y stem.Capabilities.screenR esoluti onY【把弹出窗口居中的算法】X = (舞台宽/2)-(窗口宽/2)Y = (舞台高/2)-(窗口高/2)【控制影片配合Play er的方式,包括缩放问题】stage.scaleM ode可供选择值:flash.display.StageScaleM ode【舞台的对齐方式】stage.align可供选择值:flash.display.StageAlign【隐藏Flash Player的右键菜单】stage.showD efaultContex tM enu = false;【检测系统是否具有音频功能】flash.s y stem.Capabilities.has Audi o【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】flash.s y stem.Capabilities.hasMP3【检测播放器能(true) 还是不能(false) 播放流式视频】flash.s y stem.Capabilities.has StreamingVideo【检测播放器是在支持(true) 嵌入视频的系统上运行,还是在不支持(false) 嵌入视频的系统上运行】flash.s y stem.Capabilities.has EmbeddedVideo【检测播放器能(true) 还是不能(false) 对视频流(如来自 W eb 摄像头的视频流)进行编码】flash.s y stem.Capabilities.has VideoEnc oder【显示Flash Player 中的"安全设置"面板】flash.s y stem.Sec urity.showSettings();可供选择项:flash.s y s tem.Security Panel【让其它域的.sw f访问本域的.sw f】在本域的.swf文件里加上:flash.s y stem.Security.allowDomain()或者使用安全策略文件"crossdomain.xml".在Flash 8以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.s y s tem.Security.loadPolic y File(),指定安全策略文件所在的位置.拒绝任何域的做法是在<cross-domain-policy>标签内什么也不填,安全策略文件也支持通用字符"*":<?xml v ersion="1.0"?><!-- http://www.my domain.c om/crossdomain.xml --><cross-domai n-polic y><allow-access-from domai n=" " /><allow-access-from domai n="*" /><allow-access-from domai n="210.38.196.48" /><allow-access-from domai n="*" /></cross-domain-policy>【数字的不同进制之间的转换】parseInt(str:String, radi x:uint = 0):N umber 返回十进制的数,参数radi x表示要分析的数字的基数.如果省略radix,就默认为10,除非字符串的开头是"0x","0X"或"0": trace(parseInt("0x12")); //设定radi x为16,输出:18trace(parseInt("017")); //设定radi x为8,输出:15或者使用Number,uint和int对象的toString(radi x)方法.【使用Math.round()对一个数取整,四舍五入】Math.round()trace(Math.r ound(204.499)); //输出:204trace(Math.r ound(401.5)); //输出:402【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】trace(Math.floor(204.99)); //输出:204【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加1】trace(Math.c eil(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.r ound(90.337/0.01)*0.01); //输出:90.34【把数字取成一个整数的最接近倍数值】例1,这样会把92.5取成5的最近倍数值:trace(Math.r ound(92.5/5)*5); //输出:95例2,这样会把92.5取成10的最近倍数值:trace(Math.r ound(92.5/10)*10); //输出:90【在指定数值范围内获得随机数】//可取范围:[min, max]priv ate func tion randRange(mi n:Number, max:Number):Number {v ar randomN um:Number = Math.fl oor(Math.r andom() * (max - min + 1)) + min;return randomN um;}应用例子:模拟投银币,即希望得到随机布尔值(true 或fals e): 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为:v ar 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.c os(angle) * r);y = y0 + (Math.si n(angle) * r);注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.【模拟椭圆运动】已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:x = x0 + (Math.c os(angle) * a);y = y0 + (Math.si n(angle) * b);【华氏温度和摄氏温度之间的转换】华氏温度= 摄氏度数* 9 / 5 + 32摄氏温度= (华氏度数- 32) * 5 /9【公斤与磅之间的转换】公斤= 磅* 2.2磅= 公斤/ 2.2【向数组尾端添加元素】v ar array:Array = new Array();array.pus h("a", "b");//向数组尾端添加单一元素也可以这样:array[array.length] = "c";//如果以索引设定的元素不存在,数组本身会自动扩展以包含足够的元素数目.介于中间的元素会被设为undefined: array[5] = "e";trace(array[4]); //输出: undefined【向数组开端添加元素】v ar array:Array = ["a", "b"];array.uns hift("c", "d");trace(array); //输出: c,d,a,b【删除数组中第一个元素并返回该元素,使用shift()方法】v ar l etters:Array = new Array("a", "b", "c");v ar firstLetter:String = letters.shift();trace(letters); //输出: b,ctrace(firstLetter); //输出: a【删除数组中最后一个元素并返回该元素的值,使用pop()方法】v ar l etters:Array = new Array("a", "b", "c");trace(letters); //输出: a,b,cv ar l etter:String = letters.pop();trace(letters); //输出: a,btrace(letter); //输出: c【删除数组中的元素,给数组添加新元素并返回删除的元素,使用splice()方法】splice(startIndex:i nt, del eteCount:uint, ... v al ues):ArraystartIndex: 一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引;deleteCount: 一个整数,它指定要删除的元素数量;... v al ues: 用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由s tartIndex参数指定的位置. 【查找数组中第一个相匹配的元素】v ar array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];v ar match:String = "b";for(v ar i:i nt = 0; i < array.length; i++) {if(array[i] == matc h) {trace("Element with i ndex " + i + " found to matc h " + matc h);//输出: Element with index 1 found to matc h bbreak;}}【查找数组中最后一个相匹配的元素】v ar array:Array = ["a", "b", "c", "d", "a", "b", "c", "d"];v ar match:String = "b";for(v ar i:i nt = array.l ength - 1; i >= 0; i--) {if(array[i] == matc h) {trace("Element with i ndex " + i + " found to matc h " + matc h);//输出: Element with index 5 found to matc h bbreak;}}【把字符串转成数组】使用String.split()方法:v ar list:String = "I am YoungBoy.";v ar words:Array = list.s plit(" "); //以空格作为分隔符将字符串切割trace(words); //输出: I,am,YoungBoy.【把数组转成字符串】使用String.join()方法:v ar my Arr:Array = new Array("one", "two", "thr ee");v ar my Str:String = myArr.join(" and ");trace(my Arr); //输出: one,two,threetrace(my Str); //输出: one and two and thr ee【使用对象数组处理相关数据】v ar c ars:Array = new Array();cars.pus h({make:"Mike", y ear:1997, col or:"blue"});cars.pus h({make:"Kell y", year:1986, c olor:"red"});for(v ar i:i nt = 0; i < cars.length; i++) {trace(cars[i].make + " - " + cars[i].year + " - " + cars[i].c olor);}//输出:// Mike - 1997 - blue// Kell y - 1986 - red【在数组中获取最小或最大值】v ar sc ores:Array = [10, 4, 15, 8];scores.sort(Array.NUMERIC);trace("Minimum: " + sc ores[0]);trace("Max i mum: " + sc ores[sc ores.length - 1]);【使用for ... in语句读取关联数组元素】v ar my Object:Objec t = new Objec t();my Obj = "YoungBoy";my Obj ect.age = 20;for(v ar i:String in my Obj ect) {trace(i + ": " + myObject[i]);}//输出: name: YoungBoy// age: 20注意: for ... in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内. 【AVM(ActionScript. Virtual Machin e,虚拟机)和渲染引擎(Rendering Engine)】AVM负责执行ActionScript程序,而渲染引擎则是把对象绘制在显示器上.【指出容器的显示清单中有多少显示对象】每个容器都有numChildren属性.【把项目新增至显示清单】addC hild(child:Display Object)addC hildAt(child:Display Obj ect, i ndex:int)index: 添加该子项的索引位置.如果指定当前占用的索引位置,则该位置以及所有更高位置上的子对象会在子级列表中上移一个位置.【从显示清单中移除项目】removeChild(child:Displ ay Objec t)removeChildAt(index:int)index: 要删除的Displ ay Obj ect 的子索引,该子项之上的任何显示对象的索引位置都减去1.如果想移除窗口所有子元件,可以结合remov eChildAt(),numChildren属性以及for循环.因为每次一个子元件被移除时,索引位置都会变化,所以,有两种方法可以处理所有子元件的移除:1. 总是移除位置0的子元件;2. 倒过来移除子元件,也就是从尾端开始.【更改现有子项在显示对象容器中的位置】setChildIndex(c hild:Display Object, index:int):void可能用到的方法:返回Display Object 的c hild 实例的索引位置: getC hildIndex(child:Display Object):int返回位于指定索引处的子显示对象实例: getChildAt(index:i nt):Display Object注意: 当子元件移到低于它现在所在位置的索引时,那么,从标的索引起,直到子元件索引前面的那个索引的所有子元件都会令其索引增加1,而该子元件就会指定至标的索引.当子元件移到较高索引时,从该子元件索引之上的那个索引起,直到标的索引的所有子元件都会令其索引往下减1,而该子元件就会指定至标的索引值.【关于TextField以垂直方式把文字摆在按钮表面中心点的小技巧】tex tField.y = (_height - textField.tex tHeight) / 2;tex tField.y -= 2; //减2个像素以调整偏移量【外部.sw f影片载入和互动】1. 监听init事件;2. 透过content属性存取所载入的影片.当所载入的影片做好足够的初始化工作,使其方法和属性可以接受互动时,init事件就会被发起.只有在载入器发起init事件后,才能控制影片.所载入的影片还没初始化就试着与它互动,是会产生执行期间错误的._loader.contentLoaderInfo.addEventListener(Ev ent.INIT, handleInit); //当载入的.s wf的属性和方法可用时_loader.load(new URLRequest("ExternalMov i e.s wf"));priv ate func tion handl eInit(event:Ev ent):v oi d {v ar mov i e:* = _loader.c ontent;trace(mov ie.getCol or());mov ie.setCol or(0x FF0000);}【TextField有两种类型:动态(dy namic)和输入(input),默认值为动态.改变TextField类型方法】field.type = TextFieldT y pe.INPUT; //sel ectable属性默认值为trueflash.tex t.T ex tFieldT ype.IN PUT和flash.tex t.T ex tFieldT ype.D YNAMIC【过滤文字输入】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 = "^\u001A";注意:ActionScript有区分大小写的,如果res trict属性设为abc,允许字母的大写形式(A,B和C)输入时会变成小写对待形式(a,b和c),反之亦然.restrict属性只影响用户可以输入的内容,脚本可将任何文本放入文本字段中.【设定输入框的最大长度】TextField.max Chars:int【向TextField追加内容】TextField.appendTex t(tex t:String):v oi d与通过对tex t 属性使用加法赋值来连接两个字符串(例如field.tex t += moreT ex t)相比,此方法的效率更高.【显示HTML格式的文字】TextField.htmlT ex t = "<b>Html tex t</b>";支持的HTML标签集有: <b>,<i>,<u>,<font>(有face,siz e以及color属性),< p>,<br>,<a>,<li>,<img>以及<tex tformat>(有leftmargin,rightmargin,bloc k i ndent,i ndent,l eading以及tabs tops属性,相应于Tex tF ormat类的同名属性)【缩减空白】TextField.c ondens eWhite = true;删除具有HTML文本的文本字段中的额外空白(空格,换行符等),如同多数HTML浏览器所做的那样.注意: 在设置htmlTex t 属性之前设置condens eWhite 属性【自动大小调整和对齐】TextField.autoSize = Tex tFieldAutoSize.LEFT;可选之值:flash.tex t.T ex tFieldAutoSize.C ENTERflash.tex t.T ex tFieldAutoSize.LEFTflash.tex t.T ex tFieldAutoSize.NON Eflash.tex t.T ex tFieldAutoSize.RIGHT【指示文本字段是否自动换行】TextField.wordWrap = true; //自动换行【用程序手段滚动文字】水平方向以像素为单位,而垂直方向以行做单位:scrollV: 指出文字框可见区域的最顶行,可读写;bottomScrollV: 指出文字框内最底端可见行,只读;max Scr ollV: scrollV的最大值,只读;numLines: 定义多行文本字段中的文本行数,只读;TextField.scrollV = fi eld.maxScrollV; //滚动到最后一页【响应滚动事件】field.addEv entListener(Event.SCROLL, onTextScroll);【样式化文字的方法】1. 使用HTML标签进行样式化;2. 使用Tex tF ormat对象;3. 使用CSS.例如: HTML是用<font>标签,T ex tFormat对象是设定font属性,而CSS是使用font-family属性的.受支持的层叠样式表(CSS)属性和值,及其相应的ActionScript属性名称(小括号内):color(color),display(dis play),font-famil y(fontFamily),font-size(fontSize),font-sty le(fontSty le),font-weight(fontWeight),k erni ng(k erni ng),leading(leading),letter-sp acing(letterSpacing),margin-left(marginLeft),margin-right(marginRight),tex t-align(tex tAlign),text-dec oration(tex tDec oration),text-indent(tex tIndent)受支持的HTML实体: <(小于号: <), >(大于号: >), &(和: &), "(双引号: "), '(撇号,单引号: ')其中样式对象的两种写法:写法一:v ar s ampleSty le.:Objec t = new Objec t();sampleSty l e.col or = "#FFFFFF";sampleSty l e.textAlign = "center";css.setSty l e(".sample", sampleSty le);写法二:v ar s ampleSty le.:Objec t = {color: "#FFFFFF", tex tAlign: "center"};css.setSty l e(".sample", sampleSty le);【对用户输入的文字进行样式化】使用defaultTextFormat属性,样式会施加至用户键入输入框的文字身上:v ar formatter:Tex tFor mat = new Tex tFor mat();formatter.c olor = 0x0000FF; //把文字变成蓝色field.defaultTextFormat = formatter;【对现有文字的一部分进行样式化】TextFormat.s etTex tF ormat(format:T ex tFor mat, beginIndex:int = -1, endIndex:i nt = -1):v oi d【设定文字框的字体】例子:HTML: field.htmlT ex t = "<font face='Arial'>Formatted tex t</font>";TextFormat: formatter.font = "Arial";CSS: P{ font-famil y: Arial; }也可以使用以逗号隔开的字体清单: for matter.font = "Arial, Verdana, Hel vetica";注意:字体和字体群组不同.字体群组有三种: _s ans,_serif以及_ty pewriter._sans群组一般就是指Arial或Helvetica这种字体;_serif群组一般就是指Times或Ti mes N ew Roman这种字体;_ty pewriter群组一般就是指Courier或Courier New这种字体.【嵌入字体】使用[Embed]后设标签.[Embed]后设标签应该出现在Acti onScript文件中,处于类宣告之外.你可以内嵌TrueType字体或系统字体.内嵌TrueT y pe字体时的语法: [Embed(source="pathT oTtfFile", fontName="FontN ame", mimeT y pe="application/x-font-truetype")]pathToTtfFile: ttf文件的路径,TrueT y pe字体的路径可以是相对的,也可以是绝对的;FontName: 字体名称;内嵌系统字体的语法:[Embed(sy stemFont="Times New R oman", fontName="Times New Roman", mimeType="applicati on/x-font-truetype")]fontN ame: 以相同名称作为实际系统字体名称.注意: 在使用嵌入字体时,要把Tex tField的embedF onts属性设为true,这样Tex tField只能用内嵌字体了.如果你试着替embedF onts设为true的T ex tField使用设备字体,什么都不会显示.如果embedFonts设为true,就无法指定以逗号相隔的字体清单.【建立可以旋转的文字】使用内嵌字体.当你旋转文字框时,设备字体就会消失.【显示Unicode文字】1. 从外部来源载入Unicode文字;2. 假如你的编辑器支持Unicode(如Flex Builder),则可以直接在Acti onScript程序中使用该字符;3. 使用Unicode转义字符,ActionScript里所有Unicode转义字符都以\u开头,后面再跟四位十六进制数字.注意: 如果你想取得Unicode字符,在Wi ndows下使用: 开始>所有程序>附件>系统工具>字符映射表.【把Flash Player的焦点带给文字框】stage.foc us = fi eld;把焦点移除:stage.foc us = null;注意: 当.swf文件首次载入至网页浏览器时,并没有焦点.因此,以程序的方式把焦点指定给Flas h应用程序的一个元素前,必须先把焦点移至Flas h Player.【以ActionScript选取文字】使用TextField.s etSelection(beginIndex:int, endIndex:int):void为了可以正常选取文字,文字框必须具有焦点:stage.foc us = fi eld; //把焦点设给文字框field.tex t = "This is ex ample tex t"; //设定文字field.setSel ection(0, 4); //把"This"这个单词以高亮显示使用只读的selectionBeginIndex和selec tionEndIndex属性访问所选取的字符范围的索引.【在文字内设定安插点(游标位置)并访问游标位置的索引值】可以使用TextField.s etSelection()把起始和结尾的索引参数都设成相同值,在文字内设定游标位置(假设具有焦点):field.setSel ection(0, 0); //在第一个字符前摆放安插点trace(field.c aretIndex); //输出游标位置的索引值【当文本字段受到选取或取消选取时给予响应】获得焦点时: Focus Ev ent.FOCUS_IN失去焦点时: Focus Ev ent.FOCUS_OUT通过键盘(Tab键)把焦点移除时: Focus Ev ent.KEY_FOCUS_CHANGE通过鼠标把焦点移除时: Focus Ev ent.MOUSE_FOCUS_CHANGEFocusEvent 类有一个rel atedObj ect属性.就FOCUS_IN事件而言,relatedObjec t属性是刚才拥有焦点的对象的引用地址;对于FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject属性是刚接收到焦点的对象的引用地址.FOCUS_IN和FOCUS_OUT事件都是在焦点改变后发生的,所以两者都是不可取消的事件.对于KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消默认行为:field.addEv entListener(FocusEv ent.KEY_FOCUS_CHANGE, onKey Focus);priv ate func tion onKey F ocus(event:F ocus Ev ent):v oid {if(field.tex t == "") {event.preventDefault(); //当fi eld没有任何文字前,不允许使用Tab键把焦点移除}//ev ent.rel atedObj ect就是刚才拥有焦点的对象的引用地址,即下一个获得焦点的对象的引用地址}。