`
qzriso
  • 浏览: 242431 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

AS使用小技巧(一)

阅读更多
  1. 【改变输出swf的尺度,背景颜色或帧频】   
  2. "Navigator" 窗框里右键你的项目>选中 "Properties" >选中 "ActionScript Compiler" >在 "Additional compiler arguments" 里输入你所需要的命令   
  3. 如想改变背景颜色,请输入: - default -background-color  0xffffff   
  4.   
  5. 【鼠标坐标】   
  6. mouseX mouseY   
  7.   
  8. 【检查变量类型并返回布尔值】   
  9. is   
  10.   
  11. 【检查变量类型并返回类型】   
  12. typeof   
  13.   
  14. 【检查对象类型并返回该对象】   
  15. as   
  16.   
  17. 【是数字但不是有效数字问题】   
  18. var quantity:Number =  15  -  "rabbits" ;   
  19. trace(typeof quantity);  //显示: "number" , 但它是NaN (not a number)   
  20. trace(quantity is Number);  //true   
  21. trace(quantity != NaN);  //false   
  22. //使用isNaN()函数检测:   
  23. isNaN(quantity);  //true   
  24. //检测变量是否内含有效数字:   
  25. !isNaN(quantity);  //false   
  26.   
  27. 【取消默认的严格编译模式】   
  28. "Navigator" 窗框里右键你的项目>选中 "Properties" >选中 "ActionScript Compiler" >取消 "Enabel compile-time type checking" 选项   
  29.   
  30. 【基元数据类型和复杂数据类型好比 "值类型" "引用类型" 】   
  31. 基元数据类型类似按值传递:   
  32. var intOne: int  =  1 ;   
  33. var intTwo: int  =  1 ;   
  34. trace(intOne == intTwo);  //true   
  35.   
  36. 【复杂数据类型类似按引用传递】   
  37. var arrayOne:Array =  new  Array( "a" "b" );   
  38. var arrayTwo:Array = arrayOne;   
  39. trace(arrayOne == arrayTwo);  //true   
  40. //-----------------------------------   
  41. var arrayOne:Array =  new  Array( "a" "b" );   
  42. var arrayTwo:Array =  new  Array( "a" "b" );   
  43. trace(arrayOne == arrayTwo);  //false   
  44.   
  45. 【优化逻辑AND(&&)和OR(||)的小知识】   
  46. 对于逻辑And(&&):   
  47.     除非条件表达式的前半部分为真,否则,ActionScript不会再去求算逻辑AND运算符的后半部.如果前半部为假,整个条件表达式一定为假,所以再去求算后半部就没效率了.   
  48. 对于逻辑OR(||):   
  49.     除非条件表达式前半部为假,否则,ActionScript不会再去求算逻辑OR运算符的后半部,如果前半部为真,整个条件表达式一定为真.   
  50. 总结:使用逻辑AND(&&)时,把结果最可能为 false 的表达式放到前面;使用逻辑OR(||)时,把结果最可能为 true 的表达式放到前面.   
  51.   
  52. 【Timer类注意事项】   
  53. 不要认为Timer可以极其准确;使用Timer时间间隔不要低于 10 毫秒.   
  54.   
  55. private , protected ,internal, public 访问权限】   
  56. private :只能在类本身内部访问,按惯例,命名私有成员时以下划线 "_" 开头;   
  57. protected :可以由类本身或任何子类访问.但这是以实例为基础的.换言之,类实例可以访问自己的保护成员或者父类的保护成员,但不能访问相同类的其它实例的保护成员,按惯例,命名保护成员时以下划线 "_" 开头;   
  58. internal:可以由类本身或者相同包内的任何类访问;   
  59. public :可以在类内部访问,也可以由类实例访问,或者声明为 static 时,可以直接从类访问.   
  60.   
  61. 【一个函数具有未知个数的参数,用arguments对象或 "...(rest)" 符号访问它的参数】   
  62. 注意:使用 "...(rest)" 参数会使 arguments 对象不可用;   
  63. private  funciton average(): void {   
  64.     trace(arguments.length);  //输出参数的个数   
  65.      // arguments的类型是:object,但可以像访问数组一样去访问它   
  66.     trace(arguments[ 1 ]);  //输出第二个参数   
  67. }   
  68. private  function average(...argu): void {   
  69.     trace(argu[ 1 ]);  //输出第二个参数,argu参数名是自定义的.   
  70. }   
  71.   
  72. 【错误处理 try , catch , finally 】   
  73. private  function tryError(): void {   
  74.      try  {   
  75.         trace( "测试开始-try" );   
  76.         throwError();   
  77.     } catch (errObject:Error) {   
  78.         trace( "错误信息:"  + errObject.message);   
  79.         trace( "测试结束-catch" );   
  80.          return ;   
  81.     } finally {   
  82.         trace( "虽然catch里已经有return方法,但位于return方法后面的finally里的代码依然会被执行.其实无论return方法是在try里,还是catch里,finally里的代码始终会被执行" );   
  83.     }   
  84.     trace( "前面已经有return了,此处是不会再执行的.除非没有抛出错误,以使catch里的代码没有被执行" );   
  85. }   
  86. private  function throwError(): void {   
  87.      throw   new  Error( "抛出错误" );   
  88. }   
  89.   
  90. for ...in与 for  each...in的区别】   
  91. for ...in循环不同的是, for  each...in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引).   
  92.   
  93. 【命名包路径的小技巧】   
  94.     使用相应于拥有者和相关项目的包名称会比较好.按惯例来讲,包名称的开头应该是逆向的网址名称.例如,如果Example Corp(examplecorp.com)写了一些ActionScript3. 0 类,就会把所有类放在com.examplecorp包内(或者com.examplecorp的子包内).如此一来,如果英国有另一家Example Corp(examplecorp.co.uk)也写了一些ActionScript3. 0 类,只要使用包uk.co.examplecorp,就可确保唯一性.   
  95.     当类属于特定应用程序的一部分时,就应该放在该应用程序特定的子包内.例如,Example Corp可能有个应用程序名叫WidgetStore.如果WidgetStore应用程序使用一个名为ApplicationManager的类,则此类就应该放在com.examplecorp.widgetstore包内,或者位于该包的子包内.   
  96.     按惯例来说,包名称的开头是小写字母.   
  97.   
  98. 【隐式的取出方法(getter)和设定方法(setter)】   
  99. public  function get count():uint {   
  100.      return  _count;   
  101. }   
  102. public  function set count(value:uint):uint {   
  103.      if (value <  100 ){   
  104.         _count = value;   
  105.     } else  {   
  106.          throw  Error();   
  107.     }   
  108. }   
  109.   
  110. 【确保类是绝不会有子类,使用 final 】   
  111. final   public   class  Example{}   
  112.   
  113. super 关键字的使用】   
  114. super ();  //父类的构造函数,只能在类实例构造函数内部使用   
  115. super .propertyName;  //调用父类的属性,属性需要声明为public或protected   
  116. super .methodName();  //调用父类的方法,方法需要声明为public或protected   
  117.   
  118. 【建立常数,使用关键字 const 而不是var】   
  119. static   public   const  EXAMPLE:String =  "example" ;   
  120.   
  121. 【检测播放器版本】   
  122. flash.system.Capabilities.version   
  123. 对于 8.5 版以前的任何Flash Player版本,这种方法都不适用.   
  124.   
  125. 【判断客户端系统】   
  126. flash.system.Capabilities.os   
  127.   
  128. 【检测播放器类型】   
  129. flash.system.Capabilities.playerType   
  130. 可能的值有:   
  131. "StandAlone" ,用于独立的 Flash Player   
  132. "External" ,用于外部的 Flash Player 或处于测试模式下   
  133. "PlugIn" ,用于 Flash Player 浏览器插件   
  134. "ActiveX" ,用于 Microsoft Internet Explorer 使用的 Flash Player ActiveX 控件   
  135.   
  136. 【检测系统语言】   
  137. flash.system.Capabilities.language   
  138.   
  139. 【判断用户是否启用了IME(输入法编辑器)】   
  140. flash.system.IME.enabled   
  141.   
  142. 【检测屏幕的分辨率】   
  143. flash.system.Capabilities.screenResolutionX   
  144. flash.system.Capabilities.screenResolutionY   
  145.   
  146. 【把弹出窗口居中的算法】   
  147. X = (舞台宽/ 2 )-(窗口宽/ 2 )   
  148. Y = (舞台高/ 2 )-(窗口高/ 2 )   
  149.   
  150. 【控制影片配合Player的方式,包括缩放问题】   
  151. stage.scaleMode   
  152. 可供选择值:flash.display.StageScaleMode   
  153.   
  154. 【舞台的对齐方式】   
  155. stage.align   
  156. 可供选择值:flash.display.StageAlign   
  157.   
  158. 【隐藏Flash Player的右键菜单】   
  159. stage.showDefaultContextMenu =  false ;   
  160.   
  161. 【检测系统是否具有音频功能】   
  162. flash.system.Capabilities.hasAudio   
  163.   
  164. 【检测播放器是在具有MP3解码器的系统上运行,还是在没有MP3解码器的系统上运行】   
  165. flash.system.Capabilities.hasMP3   
  166.   
  167. 【检测播放器能 ( true ) 还是不能 ( false ) 播放流式视频】   
  168. flash.system.Capabilities.hasStreamingVideo   
  169.   
  170. 【检测播放器是在支持 ( true ) 嵌入视频的系统上运行,还是在不支持 ( false ) 嵌入视频的系统上运行】   
  171. flash.system.Capabilities.hasEmbeddedVideo   
  172.   
  173. 【检测播放器能 ( true ) 还是不能 ( false ) 对视频流(如来自 Web 摄像头的视频流)进行编码】   
  174. flash.system.Capabilities.hasVideoEncoder   
  175.   
  176. 【显示 Flash Player 中的 "安全设置" 面板】   
  177. flash.system.Security.showSettings();   
  178. 可供选择项:flash.system.SecurityPanel   
  179.   
  180. 【让其它域的.swf访问本域的.swf】   
  181. 在本域的.swf文件里加上:flash.system.Security.allowDomain()   
  182. 或者使用安全策略文件 "crossdomain.xml" .在Flash  8 以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.system.Security.loadPolicyFile(),指定安全策略文件所在的位置.拒绝任何域的做法是在<cross-domain-policy>标签内什么也不填,安全策略文件也支持通用字符 "*" :   
  183. <?xml version= "1.0" ?>   
  184. <!-- http: //www.mydomain.com/crossdomain.xml -->   
  185. <cross-domain-policy>   
  186.     <allow-access-from domain= "www.riahome.cn"  />   
  187.     <allow-access-from domain= "*.Y-boy.cn"  />   
  188.     <allow-access-from domain= "210.38.196.48"  />   
  189.     <allow-access-from domain= "*"  />   
  190. </cross-domain-policy>   
  191.   
  192. 【数字的不同进制之间的转换】   
  193. parseInt(str:String, radix:uint =  0 ):Number 返回十进制的数,参数radix表示要分析的数字的基数.如果省略radix,就默认为 10 ,除非字符串的开头是 "0x" , "0X" "0" :   
  194. trace(parseInt( "0x12" ));  //设定radix为16,输出:18   
  195. trace(parseInt( "017" ));  //设定radix为8,输出:15   
  196. 或者使用Number,uint和 int 对象的toString(radix)方法.   
  197.   
  198. 【使用Math.round()对一个数取整,四舍五入】   
  199. Math.round()   
  200. trace(Math.round( 204.499 ));  //输出:204   
  201. trace(Math.round( 401.5 ));  //输出:402   
  202.   
  203. 【使用Math.floor()对一个数向下取整,就是只要整数部分而不理会小数分】   
  204. trace(Math.floor( 204.99 ));  //输出:204   
  205.   
  206. 【使用Math.ceil()对一个数向上取整,只要小数部分不为零,整数部分就加 1 】   
  207. trace(Math.ceil( 401.01 ));  //输出:402   
  208.   
  209. 【产生一个随机数】   
  210. 使用Math.random()产生一个伪随机数n,其中  0  <= n <  1   
  211.   
  212. 【把数字取至最近的小数点位,即指定精确度】   
  213. 1 . 决定你要取的数字的小数点位数:例如,如果你想把 90.337 取成 90.34 ,就表示你要取到两位小数点位,也就是说你想取至最近的 0.01 ;   
  214. 2 . 让输入值除以步骤 1 所选的数字(此例为 0.01 );   
  215. 3 . 使用Math.round()把步骤 2 所计得的值取成最近的整数;   
  216. 4 . 把步骤 3 所得的结果乘以步骤 2 用于除法的那个值.   
  217. 例如,要把 90.337 取成两个小数点位数,可以使用:   
  218. trace(Math.round( 90.337 / 0.01 )* 0.01 );  //输出:90.34   
  219.   
  220. 【把数字取成一个整数的最接近倍数值】   
  221. 1 ,这样会把 92.5 取成 5 的最近倍数值:   
  222. trace(Math.round( 92.5 / 5 )* 5 );  //输出:95   
  223. 2 ,这样会把 92.5 取成 10 的最近倍数值:   
  224. trace(Math.round( 92.5 / 10 )* 10 );  //输出:90   
  225.   
  226. 【在指定数值范围内获得随机数】   
  227. //可取范围:[min, max]   
  228. private  function randRange(min:Number, max:Number):Number {   
  229.     var randomNum:Number = Math.floor(Math.random() * (max - min +  1 )) + min;   
  230.      return  randomNum;   
  231. }   
  232. 应用例子:   
  233. 模拟投银币,即希望得到随机布尔值( true  或  false ): randRange( 0 1 );   
  234. 模拟投骰子,即希望得到随机六个值: randRange( 1 6 );   
  235. 为避免被缓存而需要产生一个独一无二的数字追加在URL尾端,通常最佳方法是取得当前毫秒数.   
  236.   
  237. 【弧度(radian)与度数(degree)之间的转换】   
  238. 从弧度转为度数: degrees = radians *  180  / Math.PI   
  239. 从度数转为弧度: radians = degrees * Math.PI /  180   
  240.   
  241. 【计算两点之间的距离】   
  242. 勾股定理: c2 = a2 + b2   
  243. 假设有两个影片剪辑mc1和mc2,则它们两点间的距离c为:   
  244. var c:Number = Math.sqrt(Math.pow(mc1.x - mc2.x,  2 ) + Math.pow(mc1.y - mc2.y,  2 ));   
  245.   
  246. 【模拟圆周运动】   
  247. 已知圆心o(x0, y0),半径r和弧度angle,求圆上任意一点P(x, y)的坐标:   
  248. x = x0 + (Math.cos(angle) * r);   
  249. y = y0 + (Math.sin(angle) * r);   
  250. 注意:舞台的x轴正方向水平向右,y轴正方向垂直向下.   
  251.   
  252. 【模拟椭圆运动】   
  253. 已知圆心o(x0, y0),长轴a,短轴b以及弧度angle,求圆上任意一点P(x, y)的坐标:   
  254. x = x0 + (Math.cos(angle) * a);   
  255. y = y0 + (Math.sin(angle) * b);   
  256.   
  257.   
  258. 【华氏温度和摄氏温度之间的转换】   
  259. 华氏温度 = 摄氏度数 *  9  /  5  +  32   
  260. 摄氏温度 = (华氏度数 -  32 ) *  5  / 9   
  261.   
  262. 【公斤与磅之间的转换】   
  263. 公斤 = 磅 *  2.2   
  264. 磅 = 公斤 /  2.2   
  265.   
  266. 【向数组尾端添加元素】   
  267. var array:Array =  new  Array();   
  268. array.push( "a" "b" );   
  269. //向数组尾端添加单一元素也可以这样:   
  270. array[array.length] =  "c" ;   
  271. //如果以索引设定的元素不存在,数组本身会自动扩展以包含足够的元素数目.介于中间的元素会被设为undefined:   
  272. array[ 5 ] =  "e" ;   
  273. trace(array[ 4 ]);  //输出: undefined   
  274.   
  275. 【向数组开端添加元素】   
  276. var array:Array = [ "a" "b" ];   
  277. array.unshift( "c" "d" );   
  278. trace(array);  //输出: c,d,a,b   
  279.   
  280. 【删除数组中第一个元素并返回该元素,使用shift()方法】   
  281. var letters:Array =  new  Array( "a" "b" "c" );   
  282. var firstLetter:String = letters.shift();   
  283. trace(letters);  //输出: b,c   
  284. trace(firstLetter);  //输出: a   
  285.   
  286. 【删除数组中最后一个元素并返回该元素的值,使用pop()方法】   
  287. var letters:Array =  new  Array( "a" "b" "c" );   
  288. trace(letters);  //输出: a,b,c   
  289. var letter:String = letters.pop();   
  290. trace(letters);  //输出: a,b   
  291. trace(letter);  //输出: c   
  292.   
  293. 【删除数组中的元素,给数组添加新元素并返回删除的元素,使用splice()方法】   
  294. splice(startIndex: int , deleteCount:uint, ... values):Array   
  295. startIndex: 一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引;   
  296. deleteCount: 一个整数,它指定要删除的元素数量;   
  297. ... values: 用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由 startIndex 参数指定的位置.   
  298.   
  299. 【查找数组中第一个相匹配的元素】   
  300. var array:Array = [ "a" "b" "c" "d" "a" "b" "c" "d" ];   
  301. var match:String =  "b" ;   
  302. for (var i: int  =  0 ; i < array.length; i++) {   
  303.      if (array[i] == match) {   
  304.         trace( "Element with index "  + i +  " found to match "  + match);   
  305.          //输出: Element with index 1 found to match b   
  306.          break ;   
  307.     }   
  308. }   
  309.   
  310. 【查找数组中最后一个相匹配的元素】   
  311. var array:Array = [ "a" "b" "c" "d" "a" "b" "c" "d" ];   
  312. var match:String =  "b" ;   
  313. for (var i: int  = array.length -  1 ; i >=  0 ; i--) {   
  314.      if (array[i] == match) {   
  315.         trace( "Element with index "  + i +  " found to match "  + match);   
  316.          //输出: Element with index 5 found to match b   
  317.          break ;   
  318.     }   
  319. }   
  320.   
  321. 【把字符串转成数组】   
  322. 使用String.split()方法:   
  323. var list:String =  "I am YoungBoy." ;   
  324. var words:Array = list.split( " " );  //以空格作为分隔符将字符串切割   
  325. trace(words);  //输出: I,am,YoungBoy.   
  326.   
  327. 【把数组转成字符串】   
  328. 使用String.join()方法:   
  329. var myArr:Array =  new  Array( "one" "two" "three" );   
  330. var myStr:String = myArr.join( " and " );   
  331. trace(myArr);  //输出: one,two,three   
  332. trace(myStr);  //输出: one and two and three   
  333.   
  334. 【使用对象数组处理相关数据】   
  335. var cars:Array =  new  Array();   
  336. cars.push({make: "Mike" , year: 1997 , color: "blue" });   
  337. cars.push({make: "Kelly" , year: 1986 , color: "red" });   
  338. for (var i: int  =  0 ; i < cars.length; i++) {   
  339.     trace(cars[i].make +  " - "  + cars[i].year +  " - "  + cars[i].color);   
  340. }   
  341. //输出:   
  342. //     Mike - 1997 - blue   
  343. //     Kelly - 1986 - red   
  344.   
  345. 【在数组中获取最小或最大值】   
  346. var scores:Array = [ 10 4 15 8 ];   
  347. scores.sort(Array.NUMERIC);   
  348. trace( "Minimum: "  + scores[ 0 ]);   
  349. trace( "Maximum: "  + scores[scores.length -  1 ]);   
  350.   
  351. 【使用 for  ... in语句读取关联数组元素】   
  352. var myObject:Object =  new  Object();   
  353. myObject.name =  "YoungBoy" ;   
  354. myObject.age =  20 ;   
  355. for (var i:String in myObject) {   
  356.     trace(i +  ": "  + myObject[i]);   
  357. }   
  358. //输出: name: YoungBoy   
  359. //      age: 20   
  360. 注意:  for  ... in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内.   
  361.   
  362. 【AVM(ActionScript Virtual Machine,虚拟机)和渲染引擎(Rendering Engine)】   
  363. AVM负责执行ActionScript程序,而渲染引擎则是把对象绘制在显示器上.   
  364.   
  365. 【指出容器的显示清单中有多少显示对象】   
  366. 每个容器都有numChildren属性.   
  367.   
  368. 【把项目新增至显示清单】   
  369. addChild(child:DisplayObject)   
  370. addChildAt(child:DisplayObject, index: int )   
  371. index: 添加该子项的索引位置.如果指定当前占用的索引位置,则该位置以及所有更高位置上的子对象会在子级列表中上移一个位置.   
  372.   
  373. 【从显示清单中移除项目】   
  374. removeChild(child:DisplayObject)   
  375. removeChildAt(index: int )   
  376. index: 要删除的 DisplayObject 的子索引,该子项之上的任何显示对象的索引位置都减去 1 .   
  377. 如果想移除窗口所有子元件,可以结合removeChildAt(),numChildren属性以及 for 循环.因为每次一个子元件被移除时,索引位置都会变化,所以,有两种方法可以处理所有子元件的移除:   
  378. 1 . 总是移除位置 0 的子元件;   
  379. 2 . 倒过来移除子元件,也就是从尾端开始.   
  380.   
  381. 【更改现有子项在显示对象容器中的位置】   
  382. setChildIndex(child:DisplayObject, index: int ): void   
  383. 可能用到的方法:   
  384. 返回 DisplayObject 的 child 实例的索引位置: getChildIndex(child:DisplayObject): int   
  385. 返回位于指定索引处的子显示对象实例: getChildAt(index: int ):DisplayObject   
  386. 注意: 当子元件移到低于它现在所在位置的索引时,那么,从标的索引起,直到子元件索引前面的那个索引的所有子元件都会令其索引增加 1 ,而该子元件就会指定至标的索引.当子元件移到较高索引时,从该子元件索引之上的那个索引起,直到标的索引的所有子元件都会令其索引往下减 1 ,而该子元件就会指定至标的索引值.   
  387.   
  388. 【关于TextField以垂直方式把文字摆在按钮表面中心点的小技巧】   
  389. textField.y = (_height - textField.textHeight) /  2 ;   
  390. textField.y -=  2 //减2个像素以调整偏移量   
  391.   
  392. 【外部.swf影片载入和互动】   
  393. 1 . 监听init事件;   
  394. 2 . 透过content属性存取所载入的影片.   
  395. 当所载入的影片做好足够的初始化工作,使其方法和属性可以接受互动时,init事件就会被发起.只有在载入器发起init事件后,才能控制影片.所载入的影片还没初始化就试着与它互动,是会产生执行期间错误的.   
  396. _loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit);  //当载入的.swf的属性和方法可用时   
  397. _loader.load( new  URLRequest( "ExternalMovie.swf" ));   
  398. private  function handleInit(event:Event): void  {   
  399.     var movie:* = _loader.content;   
  400.     trace(movie.getColor());   
  401.     movie.setColor( 0xFF0000 );   
  402. }   
  403.   
  404. 【TextField有两种类型:动态(dynamic)和输入(input),默认值为动态.改变TextField类型方法】   
  405. field.type = TextFieldType.INPUT;  //selectable属性默认值为true   
  406. flash.text.TextFieldType.INPUT和flash.text.TextFieldType.DYNAMIC   
  407.   
  408. 【过滤文字输入】   
  409. TextField.restrict =  "此处为可输入的内容" ;   
  410. field.restrict =  "^此处为禁止输入的内容" ;   
  411. restrict属性支持一些类似正则表达式的样式:   
  412. field.restrict =  "a-zA-z" //只允许大小字母   
  413. field.restrict =  "a-zA-z " //只允许字母和空格   
  414. field.restrict =  "0-9" //只允许数字   
  415. field.restrict =  "^abcdefg" //除了小写字母abcdefg不允许外,其它都允许   
  416. field.restrict =  "^a-z" //所有小写字母都不允许,但是,其它内容都允许,包括大写字母   
  417. field.restrict =  "0-9^5" //只允许数字,但5例外   
  418. 让restrict字符包含具有特殊意义的字母(例如-和^):   
  419. field.restrict =  "0-9\\-" //允许数字和破折号   
  420. field.restrict =  "0-9\\^" //允许数字和^   
  421. field.restrict =  "0-9\\\\" //允许数字和反斜杠   
  422. 你也可以使用Unicode转义序列,指定允许的内容.例如:   
  423. field.restrict =  "^\u001A" ;   
  424. 注意:ActionScript有区分大小写的,如果restrict属性设为abc,允许字母的大写形式(A,B和C)输入时会变成小写对待形式(a,b和c),反之亦然.restrict属性只影响用户可以输入的内容,脚本可将任何文本放入文本字段中.   
  425.   
  426. 【设定输入框的最大长度】   
  427. TextField.maxChars: int   
  428.   
  429. 【向TextField追加内容】   
  430. TextField.appendText(text:String): void   
  431. 与通过对 text 属性使用加法赋值来连接两个字符串(例如 field.text += moreText)相比,此方法的效率更高.   
  432.   
  433. 【显示HTML格式的文字】   
  434. TextField.htmlText =  "<b>Html text</b>" ;   
  435. 支持的HTML标签集有: <b>,<i>,<u>,<font>(有face,size以及color属性),<p>,<br>,<a>,<li>,<img>以及<textformat>(有leftmargin,rightmargin,blockindent,indent,leading以及tabstops属性,相应于TextFormat类的同名属性)   
  436.   
  437. 【缩减空白】   
  438. TextField.condenseWhite =  true ;   
  439. 删除具有HTML文本的文本字段中的额外空白(空格,换行符等),如同多数HTML浏览器所做的那样.   
  440. 注意: 在设置 htmlText 属性之前设置 condenseWhite 属性   
  441.   
  442. 【自动大小调整和对齐】   
  443. TextField.autoSize = TextFieldAutoSize.LEFT;   
  444. 可选之值:   
  445. flash.text.TextFieldAutoSize.CENTER   
  446. flash.text.TextFieldAutoSize.LEFT   
  447. flash.text.TextFieldAutoSize.NONE   
  448. flash.text.TextFieldAutoSize.RIGHT   
  449.   
  450. 【指示文本字段是否自动换行】   
  451. TextField.wordWrap =  true //自动换行   
  452.   
  453. 【用程序手段滚动文字】   
  454. 水平方向以像素为单位,而垂直方向以行做单位:   
  455. scrollV: 指出文字框可见区域的最顶行,可读写;   
  456. bottomScrollV: 指出文字框内最底端可见行,只读;   
  457. maxScrollV: scrollV的最大值,只读;   
  458. numLines: 定义多行文本字段中的文本行数,只读;   
  459. TextField.scrollV = field.maxScrollV;  //滚动到最后一页   
  460.   
  461. 【响应滚动事件】   
  462. field.addEventListener(Event.SCROLL, onTextScroll);   
  463.   
  464. 【样式化文字的方法】   
  465. 1 . 使用HTML标签进行样式化;   
  466. 2 . 使用TextFormat对象;   
  467. 3 . 使用CSS.   
  468. 例如: HTML是用<font>标签,TextFormat对象是设定font属性,而CSS是使用font-family属性的.   
  469. 受支持的层叠样式表(CSS)属性和值,及其相应的ActionScript属性名称(小括号内):   
  470. 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)   
  471. 受支持的HTML实体: <(小于号: &lt;), >(大于号: &gt;), &(和: &amp;), "(双引号: &quot;), '(撇号,单引号: &apos;)   
  472. 其中样式对象的两种写法:   
  473. 写法一:   
  474. var sampleStyle:Object =  new  Object();   
  475. sampleStyle.color =  "#FFFFFF" ;   
  476. sampleStyle.textAlign =  "center" ;   
  477. css.setStyle( ".sample" , sampleStyle);   
  478. 写法二:   
  479. var sampleStyle:Object = {color:  "#FFFFFF" , textAlign:  "center" };   
  480. css.setStyle( ".sample" , sampleStyle);   
  481.   
  482. 【对用户输入的文字进行样式化】   
  483. 使用defaultTextFormat属性,样式会施加至用户键入输入框的文字身上:   
  484. var formatter:TextFormat =  new  TextFormat();   
  485. formatter.color =  0x0000FF //把文字变成蓝色   
  486. field.defaultTextFormat = formatter;   
  487.   
  488. 【对现有文字的一部分进行样式化】   
  489. TextFormat.setTextFormat(format:TextFormat, beginIndex: int  = - 1 , endIndex: int  = - 1 ): void   
  490.   
  491. 【设定文字框的字体】   
  492. 例子:   
  493. HTML: field.htmlText =  "<font face='Arial'>Formatted text</font>" ;   
  494. TextFormat: formatter.font =  "Arial" ;   
  495. CSS: P{ font-family: Arial; }   
  496. 也可以使用以逗号隔开的字体清单: formatter.font =  "Arial, Verdana, Helvetica" ;   
  497. 注意:   
  498. 字体和字体群组不同.字体群组有三种: _sans,_serif以及_typewriter.   
  499. _sans群组一般就是指Arial或Helvetica这种字体;   
  500. _serif群组一般就是指Times或Times New Roman这种字体;   
  501. _typewriter群组一般就是指Courier或Courier New这种字体.   
  502.   
  503. 【嵌入字体】   
  504. 使用[Embed]后设标签.[Embed]后设标签应该出现在ActionScript文件中,处于类宣告之外.你可以内嵌TrueType字体或系统字体.内嵌TrueType字体时的语法:   
  505. [Embed(source= "pathToTtfFile" , fontName= "FontName" , mimeType= "application/x-font-truetype" )]   
  506. pathToTtfFile: ttf文件的路径,TrueType字体的路径可以是相对的,也可以是绝对的;   
  507. FontName: 字体名称;   
  508. 内嵌系统字体的语法:   
  509. [Embed(systemFont= "Times New Roman" , fontName= "Times New Roman" , mimeType= "application/x-font-truetype" )]   
  510. fontName: 以相同名称作为实际系统字体名称.   
  511. 注意: 在使用嵌入字体时,要把TextField的embedFonts属性设为 true ,这样TextField只能用内嵌字体了.如果你试着替embedFonts设为 true 的TextField使用设备字体,什么都不会显示.如果embedFonts设为 true ,就无法指定以逗号相隔的字体清单.   
  512.   
  513. 【建立可以旋转的文字】   
  514. 使用内嵌字体.当你旋转文字框时,设备字体就会消失.   
  515.   
  516. 【显示Unicode文字】   
  517. 1 . 从外部来源载入Unicode文字;   
  518. 2 . 假如你的编辑器支持Unicode(如 Flex Builder),则可以直接在ActionScript程序中使用该字符;   
  519. 3 . 使用Unicode转义字符,ActionScript里所有Unicode转义字符都以\u开头,后面再跟四位十六进制数字.   
  520. 注意: 如果你想取得Unicode字符,在Windows下使用: 开始>所有程序>附件>系统工具>字符映射表.   
  521.   
  522. 【把Flash Player的焦点带给文字框】   
  523. stage.focus = field;   
  524. 把焦点移除:   
  525. stage.focus =  null ;   
  526. 注意: 当.swf文件首次载入至网页浏览器时,并没有焦点.因此,以程序的方式把焦点指定给Flash应用程序的一个元素前,必须先把焦点移至Flash Player.   
  527.   
  528. 【以ActionScript选取文字】   
  529. 使用TextField.setSelection(beginIndex: int , endIndex: int ): void   
  530. 为了可以正常选取文字,文字框必须具有焦点:   
  531. stage.focus = field;  //把焦点设给文字框   
  532. field.text =  "This is example text" //设定文字   
  533. field.setSelection( 0 4 );  //把"This"这个单词以高亮显示   
  534. 使用只读的selectionBeginIndex和selectionEndIndex属性访问所选取的字符范围的索引.   
  535.   
  536. 【在文字内设定安插点(游标位置)并访问游标位置的索引值】   
  537. 可以使用TextField.setSelection()把起始和结尾的索引参数都设成相同值,在文字内设定游标位置(假设具有焦点):   
  538. field.setSelection( 0 0 );  //在第一个字符前摆放安插点   
  539. trace(field.caretIndex);  //输出游标位置的索引值   
  540.   
  541. 【当文本字段受到选取或取消选取时给予响应】   
  542. 获得焦点时: FocusEvent.FOCUS_IN   
  543. 失去焦点时: FocusEvent.FOCUS_OUT   
  544. 通过键盘(Tab键)把焦点移除时: FocusEvent.KEY_FOCUS_CHANGE   
  545. 通过鼠标把焦点移除时: FocusEvent.MOUSE_FOCUS_CHANGE   
  546. FocusEvent类有一个relatedObject属性.就FOCUS_IN事件而言,relatedObject属性是刚才拥有焦点的对象的引用地址;对于FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject属性是刚接收到焦点的对象的引用地址.   
  547. FOCUS_IN和FOCUS_OUT事件都是在焦点改变后发生的,所以两者都是不可取消的事件.对于KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消默认行为:   
  548. field.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus);   
  549. private  function onKeyFocus(event:FocusEvent): void  {   
  550.      if (field.text ==  "" ) {   
  551.         event.preventDefault();  //当field没有任何文字前,不允许使用Tab键把焦点移除   
  552.     }   
  553.      //event.relatedObject就是刚才拥有焦点的对象的引用地址,即下一个获得焦点的对象的引用地址   
  554. }   
  555.   
  556. 【响应用户的输入行为】   
  557. field.addEventListener(TextEvent.TEXT_INPUT, onTextInput);   
  558. private  function onTextInput(event:TextEvent): void  {   
  559.      if (event.text ==  "a"  && field.length ==  0 ) {   
  560.         event.preventDefault();  //TEXT_INPUT是可以取消的事件.TextEvent有一个text属性,内含用户所输入的的字符.此例子确保用户输入的第一个字母不是"a"   
  561.     }   
  562. }   
  563.   
  564. 【把超链接加入文字】   
  565. 打开网页:   
  566. 例子 1 :   
  567. var css:StyleSheet =  new  StyleSheet();   
  568. css.parseCSS( "a{color:#0000FF;} a:hover{text-decoration:underline;}" );   
  569. field.styleSheet = css;   
  570. field
    分享到:
    评论

相关推荐

    AS3.0编程中的100个小技巧

    AS3.0编程中的100个小技巧,非常有用。

    vb使用的10个小技巧

    ### VB使用的10个小技巧详解 #### 1. 如果一行程序太长,能否换行? 在Visual Basic(简称VB)编程环境中,如果遇到一行代码过长的情况,可以通过在需要换行的位置后面添加下划线“_”的方式进行换行。这种方法...

    基于as3.0小游戏

    以上知识点是AS3.0小游戏开发的核心组成部分,通过学习和实践,初学者能够逐步掌握开发技巧,创作出自己的游戏作品。压缩包中的17个AS3.0源程序可以作为实例,帮助初学者通过实际操作理解这些概念,进一步提升编程...

    AS3常用的8个小技巧.txt

    ### AS3常用的8个小技巧 #### 1. 显示Flash元素的位置 在AS3中,可以利用对象的属性来获取或设置Flash元素的位置。例如,`x` 和 `y` 属性分别表示元素在其父容器中的水平位置和垂直位置。通过这些属性可以方便地...

    JDeveloper 使用小技巧

    **JDeveloper 使用小技巧** JDeveloper 是一款强大的集成开发环境(IDE),主要用于Oracle Application Framework (OAF) 和其他Java相关项目的开发。对于初学者来说,掌握一些实用的JDeveloper使用技巧能够极大地...

    VBA小技巧

    在这个“VBA小技巧”主题中,我们将深入探讨几个实用的VBA技巧,帮助你提升在Excel、Access以及它们与VB之间的协同工作的效率。 1. **单元格位移**: 在VBA中,我们可以使用Range对象来操作Excel中的单元格。例如...

    vb10个小技巧

    根据提供的文件信息,我们可以总结出以下10个Visual Basic(简称VB)的小技巧,这些技巧非常适合初学者掌握和应用。 ### 1. 图片移动小技巧 在VB中,可以通过编写简单的子程序来实现控件(如图片框)的位置移动。...

    php代码中的小技巧

    ... ... 此函数用于从指定的文件中读取数据。 ... $fd = fopen($file_name, 'r');...以上就是从提供的PHP代码片段中总结出来的小技巧和功能说明。这些技巧可以帮助开发者更好地理解和应用PHP语言,提高开发效率。

    db2使用14个经典小技巧

    以下是14个DB2使用的小技巧: 1. **查看本地节点目录**:在命令行输入 `db2 list node directory`,这将显示已注册的所有本地节点信息。 2. **编目TCP/IP节点**:使用 `db2 catalog tcpip node remote server os...

    100个gcc小技巧

    以下是针对GCC使用的部分技巧的详细介绍: 1. 打印GCC预定义的宏信息 使用“gcc -dM -E - ”命令可以显示出GCC预定义的宏信息。这在编写平台特定代码时特别有用。选项“-dM”告诉GCC生成所有预定义宏,而“-E”...

    VB编程小技巧汇总.doc

    在VB编程中,掌握一些实用的小技巧可以极大地提高开发效率和程序质量。下面将详细解释文档中提到的五个VB编程小技巧。 1. 如何避免程式重复执行? 当用户误操作导致程序被多次启动时,可能导致数据混乱或不必要的...

    AS测试小游戏

    AS测试小游戏是一款基于ActionScript(AS)开发的互动游戏,主要目标是帮助用户检验和提升他们的编程技能,尤其是ActionScript的运用能力。ActionScript是一种基于ECMAScript的脚本语言,广泛应用于Adobe Flash平台...

    电子表格小技巧

    今天我们就来介绍一个非常实用的小技巧——如何根据单元格的颜色来进行求和。 #### 技巧概述 在Excel中,我们可以利用VBA(Visual Basic for Applications)编写自定义函数来实现基于颜色的求和功能。这种方法尤其...

    t-sql 使用小技巧

    这里`Chinese_PRC_Stroke_ci_as`是中文排序规则,`ci`代表不区分大小写,`as`表示对重音不敏感。 2. **数据库加密**: SQL Server提供了`ENCRYPTBYKEY`和`DECRYPTBYKEY`函数用于加密和解密数据。不过在描述中提到的...

    as3 制作的flash小游戏

    这个压缩包包含了一个使用AS3编写的Flash小游戏——“接金币”项目,提供完整的源代码,对于学习和理解AS3编程以及Flash游戏开发具有很高的参考价值。 在AS3中,游戏开发通常涉及到以下几个关键知识点: 1. **基础...

    Flash as3.0制作的16个小游戏源码。

    "Flash AS3.0制作的16个小游戏源码"这一资源为初学者和有经验的开发者提供了宝贵的实践机会,让他们能够深入理解AS3.0的游戏开发技术。 1. **AS3.0源码**:AS3.0相对于早期版本的AS2.0有了显著的性能提升和语法改进...

    AS3示例,爬虫子小游戏

    在本示例中,“AS3示例,爬虫子小游戏”是一个使用AS3编写的简单游戏,旨在帮助初学者了解和学习AS3的基本语法和游戏开发技巧。 AS3相比其早期版本AS2,有了显著的性能提升和更严格的类型系统,它采用了ECMAScript ...

    IBM DB2 数据库使用小技巧

    ### IBM DB2 数据库使用小技巧详解 IBM DB2 是一款功能强大的企业级数据库管理系统,广泛应用于各种商业和工业环境中。对于DB2的使用者来说,掌握一些常用命令和技巧是提高工作效率的关键。以下是对给定文件中提到...

Global site tag (gtag.js) - Google Analytics