Flex tips

来源:互联网 发布:淘宝客软件哪个好 编辑:程序博客网 时间:2024/04/29 10:20

今天在网上发现了许多有关flex的用法和优化,感觉还是很有用的。在这里把它门记下来,防止以后忘了。

一 、System.setClipboard("给系统剪切板赋值 "); 用于给系统的剪切板赋值。

二、var objectid = ExternalInterface.objectID; //在 Internet Explorer 中返回 object 标签的 id 属性,或者在 Netscape 中返回 embed 标签的 name 属性。

三、如果要创建一个自定义组件,你需要重写 UIComponent 类的某些方法,最少需要重写如下方法(按先后顺序):构造函数 , createChildren(), commitProperties(), measure(), layoutChrome(), updateDisplayList() 。

四、改变输出swf的尺度,背景颜色或帧频在”Navigator”窗框里右键你的项目>选中”Properties”>选中”ActionScript Compiler”>在”Additional compiler arguments”里输入你所需要的命令如想改变背景颜色,请输入: -default-background-color 0xffffff

五、是数字但不是有效数字问题 var quantity:Number = 15 - “rabbits”; trace(typeof quantity); //显示: “number” , 但它是NaN (not a number) trace(quantity is Number); //true trace(quantity != NaN); //false //使用isNaN()函数检测: isNaN(quantity); //true //检测变量是否内含有效数字: !isNaN(quantity); //false

六、Timer类注意事项不要认为Timer可以极其准确;使用Timer时间间隔不要低于10毫秒.

七、for…in与for each…in的区别与for…in循环不同的是,for each…in循环中的迭代变量包含属性所保存的值,而不包含属性的名称(或主键,索引)

八、隐藏Flash Player的右键菜单 stage.showDefaultContextMenu = false;

九、让其它域的.swf访问本域的.swf 在本域的.swf文件里加上:flash.system.Security.allowDomain() 或 者使用安全策略文件”crossdomain.xml”.在Flash 8以前,这个文件必须放在.swf所在域的根目录,现在,你可以使用flash.system.Security.loadPolicyFile(),指 定安全策略文件所在的位置.拒绝任何域的做法是在标签内什么也不填,安全策略文件也支持通用字符 “*”:

十、把数字取至最近的小数点位,即指定精确度 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; }

十三、把数组转成字符串 使用String.join()方法: var myArr:Array = new Array(”one”, “two”, “three”); var myStr:String = myArr.join(” and “); trace(myArr); //输出: one,two,three trace(myStr); //输出: one and two and three

十四、在数组中获取最小或最大值 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(); myObject.name = “YoungBoy”; myObject.age = 20; for(var i:String in myObject) { trace(i + “: ” + myObject[i]); } //输出: name: YoungBoy // age: 20 注意: for … in循环不会显示对象所有的内建属性.例如,循环会显示执行期间新增的特殊属性,但是,不会列出内建对象的方法,即使都是储存在对象属性内。

十六、过滤文字输入 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有区分大小写的,如果restrict属性设为abc,允许字母的大写形式(A,B和C)输入时会变成小写对待形式(a,b和c),反之亦然.restrict属性只影响用户可以输入的内容,脚本可将任何文本放入文本字段中.

十七、SystemManager SystemManager 是Flex应用的主控者, 它控制着应用窗口, Application实例, 弹出窗口, cursors, 并管理着ApplicationDomain中的类. SystemManager是FlashPlayer实例化的第一个类, 它存储了主应用窗口的大小和位置信息, 保存其子组件比如:浮动弹出窗口和模态窗口的痕迹. 通过SystemManager可以获得内嵌字体,样式和document对象. 自定义的可视化组件(UIComponent的子类)只有在调用过addChild()后, 才会有一个SystemManager赋给他们, 之前是Null. 所以在自定义可视化组件的构造函数中不要使用SystemManager。

十八、Flex Application 初始化顺序通常, Application对象创建时, 发生如下事件: 1. 实例化Application对象 2. 初始化Application.systemManager 3. Application在初始化过程之前, 派发预初始化事件. 4. 调用createChild(). 此时, 所有应用组件被创建, 所有组件的createChild()被调用. 5. Application派发初始化事件, 表明所有的组件初始化完毕. 6. 派发creationComplete事件 7. Application对象添加到显示列表中 8. 派发applicationComplete事件 Flash 包含的是一个时间线上的多个帧, 而Flex的SWF只包含2个帧. SystemManager, Preloader, DownloadProgressBar和少量工具类都在第一帧, 剩下的包括应用代码/ 内嵌资源全都在第二帧中. 当Flash Player下载下载SWF时, 只要接收到第一帧内足够的数据, 就会实例化SystemManager, 由它来创建Preloader, 然后创建DownloadProgressBar, 这两个对象会察看剩余字节的传输过程. 当第一帧的所有字节传输完毕后, SystemManager发送enterFrame到第二帧, 然后是其他事件. 最后Application对象派发applicationComplete事件。

十九、FLEX 与 JSP 传递中文的问题情况分析:Flex默认使用的都是utf-8编码,包括Get、Post等方法。而Tomcat服务器端接收request对象默认是ISO_8859_1编码。 1.FLEX to JSP:情况一:MXML源代码文件中写入中文字符 Flex使用 System.useCodepage = true; //即使用本地操作系统编码(GBK)设置Flex的处理编码。Jsp中用依然用ISO_8859_1编码来处理,并转化为GBK。这样Jsp可以正确解释Flex传递的中文字符。这个时候可以认为Flex对mxml源代码文件进行编译时候,源代码中的中文字符已经混乱了,所以要加上System.useCodepage = true;,按GBK编码将中文字符从Flex发送到Tomcat。同时Tomcat中Jsp应该按GBK重新编码。(如下,categoryID 在FLEX 中赋值为中文字符) String categoryID = request.getParameter("categoryID"); String strOut = new String(categoryID.getBytes("ISO8859-1"), "GBK"); 情况二:FLEX 运行时由输入框输入中文字符 输入框输入的中文字符是一定为utf-8编码的,所以Flex中System.useCodepage = false; 或者不设置,就默认utf-8编码格式传递数据,而Tomcat中Jsp使用下面语句按utf-8来重新编码。 String categoryID = request.getParameter("categoryID"); String strOut = new String(categoryID.getBytes("ISO8859-1"), "utf-8"); 2.JSP to FLEX:情况一:FLEX 接收 JSP 页面的中文参数 Jsp页面用页面指令

设置,返回结果是utf-8编码,Flex接收后成功解释并正确显示。情况二:将MXML文件中的标签内容复制到JSP页面中, (页面中含有中文字符) Jsp页面使用指令设置即可。

二十、在Flex中添加右键菜单及页面跳转 var myContextMenu : ContextMenu = new ContextMenu(); var GoUrl : ContextMenuItem = new ContextMenuItem("欢迎您!"); GoUrl.addEventListener(ContextMenuEvent.MENU_ITEM_Select,GoUrlClick); myContextMenu.customItems.push(GoUrl); myContextMenu.hideBuiltInItems(); this.contextMenu = myContextMenu; private function GoUrlClick(event:ContextMenuEvent):void { navigateToURL(new URLRequest("http:// dragonfly.autodesk.com"),"_blank"); } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/parine26/archive/2009/05/25/4214761.aspx

原创粉丝点击