一 、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(),指 定安全策略文件所在的位置.拒絕任何域的做法是在<cross-domain-policy>標籤內什麼也不填,安全策略文件也支持通用字符 “*”: <?xml version=”1.0″?> <!– http://www.mydomain.com/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> 十、把數字取至最近的小數點位,即指定精確度 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頁面用頁面指令<%@ page contentType="text/html;charset=utf-8"%>設置,返回結果是utf-8編碼,Flex接收後成功解釋並正確顯示。 情況二:將MXML文件中的<mx:application>標籤內容複製到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"); } |