




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
常用Flex技巧【改变输出swf的尺度,背景颜色或帧频】在Navigator窗框里右键你的项目选中Properties选中ActionScript Compiler在Additional compiler arguments里输入你所需要的命令如想改变背景颜色,请输入: -default-background-color 0xffffff【鼠标坐标】mouseX mouseY【检查变量类型并返回布尔值】is【检查变量类型并返回类型】typeof【检查对象类型并返回该对象】as【是数字但不是有效数字问题】var quantity:Number = 15 - rabbits;trace(typeof quantity); /显示: number , 但它是NaN (not a number)trace(quantity is Number); /truetrace(quantity != NaN); /false/使用isNaN()函数检测:isNaN(quantity); /true/检测变量是否内含有效数字:!isNaN(quantity); /false【取消默认的严格编译模式】在Navigator窗框里右键你的项目选中Properties选中ActionScript Compiler取消Enabel compile-time type checking选项【基元数据类型和复杂数据类型好比值类型和引用类型】基元数据类型类似按值传递:var intOne:int = 1;var intTwo:int = 1;trace(intOne = intTwo); /true【复杂数据类型类似按引用传递】var arrayOne:Array = new Array(a, b);var arrayTwo:Array = arrayOne;trace(arrayOne = arrayTwo); /true/-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(|)时,把结果最可能为true的表达式放到前面.【Timer类注意事项】不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.【private,protected,internal,public访问权限】private:只能在类本身内部访问,按惯例,命名私有成员时以下划线_开头;protected:可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线_开头;internal:可以由类本身或者相同包内的任何类访问;public:可以在类内部访问,也可以由类实例访问,或者声明为static时,可以直接从类访问.【一个函数具有未知个数的参数,用arguments对象或.(rest)符号访问它的参数】注意:使用.(rest)参数会使 arguments 对象不可用;private funciton average():void trace(arguments.length); /输出参数的个数 / arguments的类型是:object,但可以像访问数组一样去访问它 trace(arguments1); /输出第二个参数private function average(.argu):void trace(argu1); /输出第二个参数,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(examplecorp.co.uk)也写了一些ActionScript3.0类,只要使用包uk.co.examplecorp,就可确保 唯一性. 当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,Example Corp可能有个应用程序名叫WidgetStore.如果WidgetStore应用程序使用一个名为ApplicationManager的类,则此 类就应该放在com.examplecorp.widgetstore包内,或者位于该包的子包内. 按惯例来说,包名称的开头是小写字母.【隐式的取出方法(getter)和设定方法(setter)】public function get count():uint return _count;public function set count(value:uint):uint if(value 100) _count = value; else throw Error(); 【确保类是绝不会有子类,使用final】final public class Example【super关键字的使用】super(); /父类的构造函数,只能在类实例构造函数内部使用pertyName; /调用父类的属性,属性需要声明为public或protectedsuper.methodName(); /调用父类的方法,方法需要声明为public或protected【建立常数,使用关键字const而不是var】static public const EXAMPLE:String = example;【检测播放器版本】flash.system.Capabilities.version对于8.5版以前的任何Flash Player版本,这种方法都不适用.【判断客户端系统】flash.system.Capabilities.os【检测播放器类型】flash.system.Capabilities.playerType可能的值有:StandAlone,用于独立的 Flash PlayerExternal,用于外部的 Flash Player 或处于测试模式下PlugIn,用于 Flash Player 浏览器插件ActiveX,用于 Microsoft Internet Explorer 使用的 Flash Player ActiveX 控件【检测系统语言】flash.system.Capabilities.language【判断用户是否启用了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.hasAudio【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】flash.system.Capabilities.hasMP3【检测播放器能 (true) 还是不能 (false) 播放流式视频】flash.system.Capabilities.hasStreamingVideo【检测播放器是在支持 (true) 嵌入视频的系统上运行,还是在不支持 (false) 嵌入视频的系统上运行】flash.system.Capabilities.hasEmbeddedVideo【检测播放器能 (true) 还是不能 (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(),指 定安全策略文件所在的位置.拒绝任何域的做法是在标签内什么也不填,安全策略文件也支持通用字符 *: 【数字的不同进制之间的转换】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, maxprivate function randRange(min:Number, max:Number):Number var randomNum:Number = Math.floor(Math.random() * (max - min + 1) + min; return randomNum;应用例子:模拟投银币,即希望得到随机布尔值(true 或 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);/向数组尾端添加单一元素也可以这样:arrayarray.length = c;/如果以索引设定的元素不存在,数组本身会自动扩展以包含足够的元素数目.介于中间的元素会被设为undefined:array5 = e;trace(array4); /输出: 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, . values):ArraystartIndex: 一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引;deleteCount: 一个整数,它指定要删除的元素数量;. values: 用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由 startIndex 参数指定的位置.【查找数组中第一个相匹配的元素】var array:Array = a, b, c, d, a, b, c, d;var match:String = b;for(var i:int = 0; i = 0; i-) if(arrayi = match) trace(Element with index + i + found to match + match); /输出: Element with index 5 found to match b break; 【把字符串转成数组】使用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:blue);cars.push(make:Kelly, year:1986, color:red);for(var i:int = 0; i cars.length; i+) trace(carsi.make + - + carsi.year + - + carsi.color);/输出:/ Mike - 1997 - blue/ Kelly - 1986 - red【在数组中获取最小或最大值】var scores:Array = 10, 4, 15, 8;scores.sort(Array.NUMERIC);trace(Minimum: + scores0);trace(Maximum: + scoresscores.length - 1);【使用for . in语句读取关联数组元素】var myObject:Object = new Object();myO = YoungBoy;myObject.age = 20;for(var i:String in myObject) trace(i + : + myObjecti);/输出: name: YoungBoy/ age: 20注意: for . in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内.【AVM(ActionScript Virtual 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 URLRequest(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属性默认值为trueflash.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-95; /只允许数字,但5例外让restrict字符包含具有特殊意义的字母(例如-和):field.restrict = 0-9-; /允许数字和破折号field.restrict = 0-9; /允许数字和field.restrict = 0-9; /允许数字和反斜杠你也可以使用Unicode转义序列,指定允许的内容.例如:field.restrict = u001A;注意: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 = Html text;支 持的HTML标签集有: ,(有face,size以及color属性),以及(有 leftmargin,rightmargin,blockindent,indent,leading以及tabstops属性,相应于 TextFormat类的同名属性)【缩减空白】TextField.condenseWhite = true;删除具有HTML文本的文本字段中的额外空白(空格,换行符等),如同多数HTML浏览器所做的那样.注意: 在设置 htmlText 属性之前设置 condenseWhite 属性【自动大小调整和对齐】TextField.autoSize = TextFieldAutoSize.LEFT;可选之值:flash.text.TextFieldAutoSize.CENTERflash.text.TextFieldAutoSize.LEFTflash.text.TextFieldAutoSize.NONEflash.text.TextFieldAutoSize.RIGHT【指示文本字段是否自动换行】TextField.wordWrap = true; /自动换行【用程序手段滚动文字】水平方向以像素为单位,而垂直方向以行做单位:scrollV: 指出文字框可见区域的最顶行,可读写;bottomScrollV: 指出文字框内最底端可见行,只读;maxScrollV: scrollV的最大值,只读;numLines: 定义多行文本字段中的文本行数,只读;TextField.scrollV = field.maxScrollV; /滚动到最后一页【响应滚动事件】field.addEventListener(Event.SCROLL, onTextScroll);【样式化文字的方法】1. 使用HTML标签进行样式化;2. 使用TextFormat对象;3. 使用CSS.例如: HTML是用标签,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),margin-left(marginLeft),margin-right(marginRight),text-align(textAlign),text-decoration(textDecoration),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 = Formatted text;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文件中,处于类宣告之外.你可以内嵌TrueType字体或系统字体.内嵌TrueType字体时的语法:Embed(source=pathToTtfFile, fontName=FontName, mimeType=application/x-font-truetype)pathToTtfFile: ttf文件的路径,TrueType字体的路径可以是相对的,也可以是绝对的;FontName: 字体名称;内嵌系统字体的语法:Embed(systemFont=Times New Roman, fontName=Times New Roman, mimeType=application/x-font-truetype)fontName: 以相同名称作为实际系统字体名称.注 意: 在使用嵌入字体时,要把TextField的embedFonts属性设为true,这样TextField只能用内嵌字体了.如果你试着替 embedFonts设为true的TextField使用设备字体,什么都不会显示.如果embedFonts设为true,就无法指定以逗号相隔的字 体清单.【建立可以旋转的文字】使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 12137-2025气瓶气密性试验方法
- 巴中市消防救援支队 关于2025年度面向社会招录政府专职消防员(29人)备考考试题库附答案解析
- 2025年从旌阳区服务基层项目人员中公开考核招聘事业单位工作人员的备考考试题库附答案解析
- 2025安徽工商职业学院下半年招聘工作人员2人备考考试题库附答案解析
- 2025重庆医科大学附属绵阳医院绵阳市第三人民医院游仙分院招聘8人(四川)备考考试题库附答案解析
- 2025浙江台州市中心血站招聘编制外人员1人备考考试题库附答案解析
- 宜春市面向社会公开招聘市属国有企业员工的备考考试题库附答案解析
- 2025下半年国家矿山安全监察局黑龙江局事业单位招聘工作人员14人备考考试题库附答案解析
- 2025湖南娄底市双峰县直事业单位引进高学历(专门)人才补充11人考试备考题库及答案解析
- 哲学论文写作探索
- 2025年江苏省泰州市保安员理论考试题库及答案
- 2025托幼机构卫生保健人员考试题库(附答案)
- 申请增列护理学硕士专业学位授权点的必要性与可行性论证报告
- 文化遗产数字化保护与文化遗产数字化保护的公众认知与接受度研究报告001
- 《中级财务会计》课件-11收入、费用和利润
- 部编版(2024)七年级上册道德与法治第一单元 少年有梦 单元测试卷(含答案)
- 血液科抗感染病例汇报
- 耳鸣的健康教育
- 孕妇合理安全用药
- 第一章有理数(A卷)单元过关测验(含解析) 2025-2026学年人教版七年级数学上册
- 2025年中国底部填充胶粘剂市场调查研究报告
评论
0/150
提交评论