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(),指 定安全策略文件所在的位置.拒絕任何域的做法是在<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");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章