一 、System.setClipboard("給系統(tǒng)剪切板賦值 "); 用于給系統(tǒng)的剪切板賦值。
二、var objectid = ExternalInterface.objectID; //在 Internet Explorer 中返回 object 標簽的 id 屬性,或者在 Netscape 中返回 embed 標簽的 name 屬性。 三、如果要創(chuàng)建一個自定義組件,你需要重寫 UIComponent 類的某些方法,最少需要重寫如下方法(按先后順序):構造函數(shù) , createChildren(), commitProperties(), measure(), layoutChrome(), updateDisplayList() 。 四、改變輸出swf的尺度,背景顏色或幀頻 在”Navigator”窗框里右鍵你的項目>選中”Properties”>選中”ActionScript Compiler”>在”Additional compiler arguments”里輸入你所需要的命令 如想改變背景顏色,請輸入: -default-background-color 0xffffff 五、是數(shù)字但不是有效數(shù)字問題 var quantity:Number = 15 - “rabbits”; trace(typeof quantity); //顯示: “number” , 但它是NaN (not a number) trace(quantity is Number); //true trace(quantity != NaN); //false //使用isNaN()函數(shù)檢測: isNaN(quantity); //true //檢測變量是否內(nèi)含有效數(shù)字: !isNaN(quantity); //false 六、Timer類注意事項 不要認為Timer可以極其準確;使用Timer時間間隔不要低于10毫秒. 七、for…in與for each…in的區(qū)別 與for…in循環(huán)不同的是,for each…in循環(huán)中的迭代變量包含屬性所保存的值,而不包含屬性的名稱(或主鍵,索引) 八、隱藏Flash Player的右鍵菜單 stage.showDefaultContextMenu = false; 九、讓其它域的.swf訪問本域的.swf 在本域的.swf文件里加上:flash.system.Security.allowDomain() 或 者使用安全策略文件”crossdomain.xml”.在Flash 8以前,這個文件必須放在.swf所在域的根目錄,現(xiàn)在,你可以使用flash.system.Security.loadPolicyFile(),指定安全策略文件所在的位置.拒絕任何域的做法是在<cross-domain-policy>標簽內(nèi)什么也不填,安全策略文件也支持通用字符 “*”: <?xml version=”1.0″?> <!– http://www./crossdomain.xml –> <cross-domain-policy> <allow-access-from domain=”www.riahome.cn” /> <allow-access-from domain=”*.Y-boy.cn” /> <allow-access-from domain=”210.38.196.48″ /> <allow-access-from domain=”*” /> </cross-domain-policy> 十、把數(shù)字取至最近的小數(shù)點位,即指定精確度 1. 決定你要取的數(shù)字的小數(shù)點位數(shù):例如,如果你想把90.337取成90.34,就表示你要取到兩位小數(shù)點位,也就是說你想取至最近的0.01; 2. 讓輸入值除以步驟1所選的數(shù)字(此例為0.01); 3. 使用Math.round()把步驟2所計得的值取成最近的整數(shù); 4. 把步驟3所得的結果乘以步驟2用于除法的那個值. 例如,要把90.337取成兩個小數(shù)點位數(shù),可以使用: trace(Math.round(90.337/0.01)*0.01); //輸出:90.34 十一、把數(shù)字取成一個整數(shù)的最接近倍數(shù)值 例1,這樣會把92.5取成5的最近倍數(shù)值: trace(Math.round(92.5/5)*5); //輸出:95 例2,這樣會把92.5取成10的最近倍數(shù)值: trace(Math.round(92.5/10)*10); //輸出:90 十二、在指定數(shù)值范圍內(nèi)獲得隨機數(shù) //可取范圍:[min, max] private function randRange(min:Number, max:Number):Number { var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min; return randomNum; } 十三、把數(shù)組轉成字符串 使用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 十四、在數(shù)組中獲取最小或最大值 var scores:Array = [10, 4, 15, 8]; scores.sort(Array.NUMERIC); trace(”Minimum: ” + scores[0]); trace(”Maximum: ” + scores[scores.length - 1]); 十五、使用for … in語句讀取關聯(lián)數(shù)組元素 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循環(huán)不會顯示對象所有的內(nèi)建屬性.例如,循環(huán)會顯示執(zhí)行期間新增的特殊屬性,但是,不會列出內(nèi)建對象的方法,即使都是儲存在對象屬性內(nèi)。 十六、過濾文字輸入 TextField.restrict = “此處為可輸入的內(nèi)容”; field.restrict = “^此處為禁止輸入的內(nèi)容”; restrict屬性支持一些類似正則表達式的樣式: field.restrict = “a-zA-z”; //只允許大小字母 field.restrict = “a-zA-z “; //只允許字母和空格 field.restrict = “0-9″; //只允許數(shù)字 field.restrict = “^abcdefg”; //除了小寫字母abcdefg不允許外,其它都允許 field.restrict = “^a-z”; //所有小寫字母都不允許,但是,其它內(nèi)容都允許,包括大寫字母 field.restrict = “0-9^5″; //只允許數(shù)字,但5例外 讓restrict字符包含具有特殊意義的字母(例如-和^): field.restrict = “0-9\\-”; //允許數(shù)字和破折號 field.restrict = “0-9\\^”; //允許數(shù)字和^ field.restrict = “0-9\\\\”; //允許數(shù)字和反斜杠 你也可以使用Unicode轉義序列,指定允許的內(nèi)容.例如: field.restrict = “^\u001A”; 注意:ActionScript有區(qū)分大小寫的,如果restrict屬性設為abc,允許字母的大寫形式(A,B和C)輸入時會變成小寫對待形式(a,b和c),反之亦然.restrict屬性只影響用戶可以輸入的內(nèi)容,腳本可將任何文本放入文本字段中. 十七、SystemManager SystemManager 是Flex應用的主控者, 它控制著應用窗口, Application實例, 彈出窗口, cursors, 并管理著ApplicationDomain中的類. SystemManager是FlashPlayer實例化的第一個類, 它存儲了主應用窗口的大小和位置信息, 保存其子組件比如:浮動彈出窗口和模態(tài)窗口的痕跡. 通過SystemManager可以獲得內(nèi)嵌字體,樣式和document對象. 自定義的可視化組件(UIComponent的子類)只有在調(diào)用過addChild()后, 才會有一個SystemManager賦給他們, 之前是Null. 所以在自定義可視化組件的構造函數(shù)中不要使用SystemManager。 十八、Flex Application 初始化順序 通常, Application對象創(chuàng)建時, 發(fā)生如下事件: 1. 實例化Application對象 2. 初始化Application.systemManager 3. Application在初始化過程之前, 派發(fā)預初始化事件. 4. 調(diào)用createChild(). 此時, 所有應用組件被創(chuàng)建, 所有組件的createChild()被調(diào)用. 5. Application派發(fā)初始化事件, 表明所有的組件初始化完畢. 6. 派發(fā)creationComplete事件 7. Application對象添加到顯示列表中 8. 派發(fā)applicationComplete事件 Flash 包含的是一個時間線上的多個幀, 而Flex的SWF只包含2個幀. SystemManager, Preloader, DownloadProgressBar和少量工具類都在第一幀, 剩下的包括應用代碼/ 內(nèi)嵌資源全都在第二幀中. 當Flash Player下載下載SWF時, 只要接收到第一幀內(nèi)足夠的數(shù)據(jù), 就會實例化SystemManager, 由它來創(chuàng)建Preloader, 然后創(chuàng)建DownloadProgressBar, 這兩個對象會察看剩余字節(jié)的傳輸過程. 當?shù)谝粠乃凶止?jié)傳輸完畢后, SystemManager發(fā)送enterFrame到第二幀, 然后是其他事件. 最后Application對象派發(fā)applicationComplete事件。 十九、FLEX 與 JSP 傳遞中文的問題 情況分析:Flex默認使用的都是utf-8編碼,包括Get、Post等方法。而Tomcat服務器端接收request對象默認是ISO_8859_1編碼。 1.FLEX to JSP: 情況一:MXML源代碼文件中寫入中文字符 Flex使用 System.useCodepage = true; //即使用本地操作系統(tǒng)編碼(GBK)設置Flex的處理編碼。Jsp中用依然用ISO_8859_1編碼來處理,并轉化為GBK。這樣Jsp可以正確解釋Flex傳遞的中文字符。這個時候可以認為Flex對mxml源代碼文件進行編譯時候,源代碼中的中文字符已經(jīng)混亂了,所以要加上System.useCodepage = true;,按GBK編碼將中文字符從Flex發(fā)送到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編碼格式傳遞數(shù)據(jù),而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 頁面的中文參數(shù) Jsp頁面用頁面指令<%@ page contentType="text/html;charset=utf-8"%>設置,返回結果是utf-8編碼,F(xiàn)lex接收后成功解釋并正確顯示。 情況二:將MXML文件中的<mx:application>標簽內(nèi)容復制到JSP頁面中, (頁面中含有中文字符) Jsp頁面使用指令<%@ page contentType="text/html;charset=gb2312/gbk"%>設置即可。 二十、在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"); } |
|