天天看點

AS3經驗之談

【改變輸出swf的尺度,背景顔色或幀頻】 在"Navigator"窗框裡右鍵你的項目>選中"Properties">選中"ActionScript Compiler">在"Additional compiler arguments"裡輸入你所需要的指令 如想改變背景顔色,請輸入: -default-background-color 0xffffff

【滑鼠坐标】 mouseX mouseY 【檢查變量類型并傳回布爾值】 is 【檢查變量類型并傳回類型】 typeof 【檢查對象類型并傳回該對象】 as 【是數字但不是有效數字問題】 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 【取消預設的嚴格編譯模式】 在"Navigator"窗框裡右鍵你的項目>選中"Properties">選中"ActionScript Compiler">取消"Enabel compile-time type checking"選項 【基中繼資料類型和複雜資料類型好比"值類型"和"引用類型"】 基中繼資料類型類似按值傳遞: var intOne:int = 1; var intTwo:int = 1; trace(intOne == intTwo); //true 【複雜資料類型類似按引用傳遞】 var arrayOne:Array = new Array("a", "b"); var arrayTwo:Array = arrayOne; trace(arrayOne == arrayTwo); //true //----------------------------------- var arrayOne:Array = new Array("a", "b"); var arrayTwo:Array = new Array("a", "b"); trace(arrayOne == arrayTwo); //false 【優化邏輯AND(&&)和OR(||)的小知識】 對于邏輯And(&&):      除非條件表達式的前半部分為真,否則,ActionScript不會再去求算邏輯AND運算符的後半部.如果前半部為假,整個條件表達式一定為假,是以再去求算後半部就沒效率了. 對于邏輯OR(||):      除非條件表達式前半部為假,否則,ActionScript不會再去求算邏輯OR運算符的後半部,如果前半部為真,整個條件表達式一定為真. 總結:使用邏輯AND(&&)時,把結果最可能為false的表達式放到前面;使用邏輯OR(||)時,把結果最可能為true的表達式放到前面. 【Timer類注意事項】 不要認為Timer可以極其準确;使用Timer時間間隔不要低于10毫秒. 【private,protected,internal,public通路權限】 private:隻能在類本身内部通路,按慣例,命名私有成員時以下劃線"_"開頭; protected:可以由類本身或任何子類通路.但這是以執行個體為基礎的.換言之,類執行個體可以通路自己的保護成員或者父類的保護成員,但不能通路相同類的其它執行個體的保護成員,按慣例,命名保護成員時以下劃線"_"開頭; internal:可以由類本身或者相同包内的任何類通路; public:可以在類内部通路,也可以由類執行個體通路,或者聲明為static時,可以直接從類通路. 【一個函數具有未知個數的參數,用arguments對象或"...(rest)"符号通路它的參數】 注意:使用"...(rest)"參數會使 arguments 對象不可用; private funciton average():void{      trace(arguments.length); //輸出參數的個數      // arguments的類型是:object,但可以像通路數組一樣去通路它      trace(arguments[1]); //輸出第二個參數 } private function average(...argu):void{      trace(argu[1]); //輸出第二個參數,argu參數名是自定義的. } 【錯誤處理try,catch,finally】 private function tryError():void{      try {          trace("測試開始-try");          throwError();      }catch(errObject:Error) {          trace("錯誤資訊:" + errObject.message);          trace("測試結束-catch");          return;      }finally{          trace("雖然catch裡已經有return方法,但位于return方法後面的finally裡的代碼依然會被執行.其實無論return方法是在try裡,還是catch裡,finally裡的代碼始終會被執行");      }      trace("前面已經有return了,此處是不會再執行的.除非沒有抛出錯誤,以使catch裡的代碼沒有被執行"); } private function throwError():void{      throw new Error("抛出錯誤"); } 【for...in與for each...in的差別】 與for...in循環不同的是,for each...in循環中的疊代變量包含屬性所儲存的值,而不包含屬性的名稱(或主鍵,索引). 【命名包路徑的小技巧】      使用相應于擁有者和相關項目的包名稱會比較好.按慣例來講,包名稱的開頭應該是逆向的網址名稱.例如,如果Example Corp(examplecorp.com)寫了一些ActionScript3.0類,就會把所有類放在com.examplecorp包内(或者 com.examplecorp的子包内).如此一來,如果英國有另一家Example Corp(examplecorp.co.uk)也寫了一些ActionScript3.0類,隻要使用包uk.co.examplecorp,就可確定 唯一性.      當類屬于特定應用程式的一部分時,就應該放在該應用程式特定的子包内.例如,Example Corp可能有個應用程式名叫WidgetStore.如果WidgetStore應用程式使用一個名為ApplicationManager的類,則此 類就應該放在com.examplecorp.widgetstore包内,或者位于該包的子包内.      按慣例來說,包名稱的開頭是小寫字母. 【隐式的取出方法(getter)和設定方法(setter)】 public function get count():uint {      return _count; } public function set count(value:uint):uint {      if(value < 100){          _count = value;      }else {          throw Error();      } } 【確定類是絕不會有子類,使用final】 final public class Example{} 【super關鍵字的使用】 super(); //父類的構造函數,隻能在類執行個體構造函數内部使用 super.propertyName; //調用父類的屬性,屬性需要聲明為public或protected super.methodName(); //調用父類的方法,方法需要聲明為public或protected 【建立常數,使用關鍵字const而不是var】 static public const EXAMPLE:String = "example"; 【檢測播放器版本】 flash.system.Capabilities.version 對于8.5版以前的任何Flash Player版本,這種方法都不适用. 【判斷用戶端系統】 flash.system.Capabilities.os 【檢測播放器類型】 flash.system.Capabilities.playerType 可能的值有: "StandAlone",用于獨立的 Flash Player "External",用于外部的 Flash Player 或處于測試模式下 "PlugIn",用于 Flash Player 浏覽器插件 "ActiveX",用于 Microsoft Internet Explorer 使用的 Flash Player ActiveX 控件 【檢測系統語言】 flash.system.Capabilities.language 【判斷使用者是否啟用了IME(輸入法編輯器)】 flash.system.IME.enabled 【檢測螢幕的分辨率】 flash.system.Capabilities.screenResolutionX flash.system.Capabilities.screenResolutionY 【把彈出視窗居中的算法】 X = (舞台寬/2)-(視窗寬/2) Y = (舞台高/2)-(視窗高/2) 【控制影片配合Player的方式,包括縮放問題】 stage.scaleMode 可供選擇值:flash.display.StageScaleMode 【舞台的對齊方式】 stage.align 可供選擇值:flash.display.StageAlign 【隐藏Flash Player的右鍵菜單】 stage.showDefaultContextMenu = false; 【檢測系統是否具有音頻功能】 flash.system.Capabilities.hasAudio 【檢測播放器是在具有MP3解碼器的系統上運作,還是在沒有MP3解碼器的系統上運作】 flash.system.Capabilities.hasMP3 【檢測播放器能 (true) 還是不能 (false) 播放流式視訊】 flash.system.Capabilities.hasStreamingVideo 【檢測播放器是在支援 (true) 嵌入視訊的系統上運作,還是在不支援 (false) 嵌入視訊的系統上運作】 flash.system.Capabilities.hasEmbeddedVideo

外部.swf影片載入和互動】 1. 監聽init事件; 2. 透過content屬性存取所載入的影片. 當所載入的影片做好足夠的初始化工作,使其方法和屬性可以接受互動時,init事件就會被發起.隻有在載入器發起init事件後,才能控制影片.所載入的影片還沒初始化就試着與它互動,是會産生執行期間錯誤的. _loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit); //當載入的.swf的屬性和方法可用時 _loader.load(new URLRequest("ExternalMovie.swf")); private function handleInit(event:Event):void {      var movie:* = _loader.content;      trace(movie.getColor());      movie.setColor(0xFF0000); } 【TextField有兩種類型:動态(dynamic)和輸入(input),預設值為動态.改變TextField類型方法】 field.type = TextFieldType.INPUT; //selectable屬性預設值為true flash.text.TextFieldType.INPUT和flash.text.TextFieldType.DYNAMIC 【過濾文字輸入】 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屬性隻影響使用者可以輸入的内容,腳本可将任何文本放入文本字段中. 【設定輸入框的最大長度】 TextField.maxChars:int 【向TextField追加内容】 TextField.appendText(text:String):void 與通過對 text 屬性使用加法指派來連接配接兩個字元串(例如 field.text += moreText)相比,此方法的效率更高. 【顯示HTML格式的文字】 TextField.htmlText = "<b>Html text</b>"; 支 持的HTML标簽集有: <b>,<i>,<u>,<font>(有face,size以及color屬性),< p>,

,<a>,<li>,<img> 以及<textformat>(有 leftmargin,rightmargin,blockindent,indent,leading以及tabstops屬性,相應于 TextFormat類的同名屬性) 【縮減空白】 TextField.condenseWhite = true; 删除具有HTML文本的文本字段中的額外空白(空格,換行符等),如同多數HTML浏覽器所做的那樣. 注意: 在設定 htmlText 屬性之前設定 condenseWhite 屬性 【自動大小調整和對齊】 TextField.autoSize = TextFieldAutoSize.LEFT; 可選之值: flash.text.TextFieldAutoSize.CENTER flash.text.TextFieldAutoSize.LEFT flash.text.TextFieldAutoSize.NONE flash.text.TextFieldAutoSize.RIGHT 【訓示文本字段是否自動換行】 TextField.wordWrap = true; //自動換行 【用程式手段滾動文字】 水準方向以像素為機關,而垂直方向以行做機關: scrollV: 指出文字框可見區域的最頂行,可讀寫; bottomScrollV: 指出文字框内最底端可見行,隻讀; maxScrollV: scrollV的最大值,隻讀; numLines: 定義多行文本字段中的文本行數,隻讀; TextField.scrollV = field.maxScrollV; //滾動到最後一頁 【響應滾動事件】 field.addEventListener(Event.SCROLL, onTextScroll); 【樣式化文字的方法】 1. 使用HTML标簽進行樣式化; 2. 使用TextFormat對象; 3. 使用CSS. 例如: HTML是用<font>标簽,TextFormat對象是設定font屬性,而CSS是使用font-family屬性的. 受支援的層疊樣式表(CSS)屬性和值,及其相應的ActionScript屬性名稱(小括号内): 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) 受支援的HTML實體: <(小于号: <), >(大于号: >), &(和: &), "(雙引号: "), '(撇号,單引号: ') 其中樣式對象的兩種寫法: 寫法一: var sampleStyle:Object = new Object(); sampleStyle.color = "#FFFFFF"; sampleStyle.textAlign = "center"; css.setStyle(".sample", sampleStyle); 寫法二: var sampleStyle:Object = {color: "#FFFFFF", textAlign: "center"}; css.setStyle(".sample", sampleStyle); 【對使用者輸入的文字進行樣式化】 使用defaultTextFormat屬性,樣式會施加至使用者鍵入輸入框的文字身上: var formatter:TextFormat = new TextFormat(); formatter.color = 0x0000FF; //把文字變成藍色 field.defaultTextFormat = formatter; 【對現有文字的一部分進行樣式化】 TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void 【設定文字框的字型】 例子: HTML: field.htmlText = "<font >Formatted text</font>"; TextFormat: formatter.font = "Arial"; CSS: P{ font-family: Arial; } 也可以使用以逗号隔開的字型清單: formatter.font = "Arial, Verdana, Helvetica"; 注意: 字型和字型群組不同.字型群組有三種: _sans,_serif以及_typewriter. _sans群組一般就是指Arial或Helvetica這種字型; _serif群組一般就是指Times或Times New Roman這種字型; _typewriter群組一般就是指Courier或Courier New這種字型. 【嵌入字型】 使用[Embed]後設标簽.[Embed]後設标簽應該出現在ActionScript檔案中,處于類宣告之外.你可以内嵌TrueType字型或系統字型.内嵌TrueType字型時的文法: [Embed(source="pathToTtfFile", fontName="FontName", mimeType="application/x-font-truetype")] pathToTtfFile: ttf檔案的路徑,TrueType字型的路徑可以是相對的,也可以是絕對的; FontName: 字型名稱; 内嵌系統字型的文法: [Embed(systemFont="Times New Roman", fontName="Times New Roman", mimeType="application/x-font-truetype")] fontName: 以相同名稱作為實際系統字型名稱. 注 意: 在使用嵌入字型時,要把TextField的embedFonts屬性設為true,這樣TextField隻能用内嵌字型了.如果你試着替 embedFonts設為true的TextField使用裝置字型,什麼都不會顯示.如果embedFonts設為true,就無法指定以逗号相隔的字 體清單. 【建立可以旋轉的文字】 使用内嵌字型.當你旋轉文字框時,裝置字型就會消失. 【顯示Unicode文字】 1. 從外部來源載入Unicode文字; 2. 假如你的編輯器支援Unicode(如 Flex Builder),則可以直接在ActionScript程式中使用該字元; 3. 使用Unicode轉義字元,ActionScript裡所有Unicode轉義字元都以/u開頭,後面再跟四位十六進制數字. 注意: 如果你想取得Unicode字元,在Windows下使用: 開始>所有程式>附件>系統工具>字元映射表. 【把Flash Player的焦點帶給文字框】 stage.focus = field; 把焦點移除: stage.focus = null; 注意: 當.swf檔案首次載入至網頁浏覽器時,并沒有焦點.是以,以程式的方式把焦點指定給Flash應用程式的一個元素前,必須先把焦點移至Flash Player. 【以ActionScript選取文字】 使用TextField.setSelection(beginIndex:int, endIndex:int):void 為了可以正常選取文字,文字框必須具有焦點: stage.focus = field; //把焦點設給文字框 field.text = "This is example text"; //設定文字 field.setSelection(0, 4); //把"This"這個單詞以高亮顯示 使用隻讀的selectionBeginIndex和selectionEndIndex屬性通路所選取的字元範圍的索引. 【在文字内設定安插點(遊标位置)并通路遊标位置的索引值】 可以使用TextField.setSelection()把起始和結尾的索引參數都設成相同值,在文字内設定遊标位置(假設具有焦點): field.setSelection(0, 0); //在第一個字元前擺放安插點 trace(field.caretIndex); //輸出遊标位置的索引值 【當文本字段受到選取或取消選取時給予響應】 獲得焦點時: FocusEvent.FOCUS_IN 失去焦點時: FocusEvent.FOCUS_OUT 通過鍵盤(Tab鍵)把焦點移除時: FocusEvent.KEY_FOCUS_CHANGE 通過滑鼠把焦點移除時: FocusEvent.MOUSE_FOCUS_CHANGE FocusEvent 類有一個relatedObject屬性.就FOCUS_IN事件而言,relatedObject屬性是剛才擁有焦點的對象的引用位址;對于 FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject屬性是剛接收到焦點的 對象的引用位址. FOCUS_IN和FOCUS_OUT事件都是在焦點改變後發生的,是以兩者都是不可取消的事件.對于KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消預設行為: field.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus); private function onKeyFocus(event:FocusEvent):void {      if(field.text == "") {          event.preventDefault(); //當field沒有任何文字前,不允許使用Tab鍵把焦點移除      }      //event.relatedObject就是剛才擁有焦點的對象的引用位址,即下一個獲得焦點的對象的引用位址 }

外部.swf影片載入和互動】 1. 監聽init事件; 2. 透過content屬性存取所載入的影片. 當所載入的影片做好足夠的初始化工作,使其方法和屬性可以接受互動時,init事件就會被發起.隻有在載入器發起init事件後,才能控制影片.所載入的影片還沒初始化就試着與它互動,是會産生執行期間錯誤的. _loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit); //當載入的.swf的屬性和方法可用時 _loader.load(new URLRequest("ExternalMovie.swf")); private function handleInit(event:Event):void {      var movie:* = _loader.content;      trace(movie.getColor());      movie.setColor(0xFF0000); } 【TextField有兩種類型:動态(dynamic)和輸入(input),預設值為動态.改變TextField類型方法】 field.type = TextFieldType.INPUT; //selectable屬性預設值為true flash.text.TextFieldType.INPUT和flash.text.TextFieldType.DYNAMIC 【過濾文字輸入】 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屬性隻影響使用者可以輸入的内容,腳本可将任何文本放入文本字段中. 【設定輸入框的最大長度】 TextField.maxChars:int 【向TextField追加内容】 TextField.appendText(text:String):void 與通過對 text 屬性使用加法指派來連接配接兩個字元串(例如 field.text += moreText)相比,此方法的效率更高. 【顯示HTML格式的文字】 TextField.htmlText = "<b>Html text</b>"; 支 持的HTML标簽集有: <b>,<i>,<u>,<font>(有face,size以及color屬性),< p>,

,<a>,<li>,<img> 以及<textformat>(有 leftmargin,rightmargin,blockindent,indent,leading以及tabstops屬性,相應于 TextFormat類的同名屬性) 【縮減空白】 TextField.condenseWhite = true; 删除具有HTML文本的文本字段中的額外空白(空格,換行符等),如同多數HTML浏覽器所做的那樣. 注意: 在設定 htmlText 屬性之前設定 condenseWhite 屬性 【自動大小調整和對齊】 TextField.autoSize = TextFieldAutoSize.LEFT; 可選之值: flash.text.TextFieldAutoSize.CENTER flash.text.TextFieldAutoSize.LEFT flash.text.TextFieldAutoSize.NONE flash.text.TextFieldAutoSize.RIGHT 【訓示文本字段是否自動換行】 TextField.wordWrap = true; //自動換行 【用程式手段滾動文字】 水準方向以像素為機關,而垂直方向以行做機關: scrollV: 指出文字框可見區域的最頂行,可讀寫; bottomScrollV: 指出文字框内最底端可見行,隻讀; maxScrollV: scrollV的最大值,隻讀; numLines: 定義多行文本字段中的文本行數,隻讀; TextField.scrollV = field.maxScrollV; //滾動到最後一頁 【響應滾動事件】 field.addEventListener(Event.SCROLL, onTextScroll); 【樣式化文字的方法】 1. 使用HTML标簽進行樣式化; 2. 使用TextFormat對象; 3. 使用CSS. 例如: HTML是用<font>标簽,TextFormat對象是設定font屬性,而CSS是使用font-family屬性的. 受支援的層疊樣式表(CSS)屬性和值,及其相應的ActionScript屬性名稱(小括号内): 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) 受支援的HTML實體: <(小于号: <), >(大于号: >), &(和: &), "(雙引号: "), '(撇号,單引号: ') 其中樣式對象的兩種寫法: 寫法一: var sampleStyle:Object = new Object(); sampleStyle.color = "#FFFFFF"; sampleStyle.textAlign = "center"; css.setStyle(".sample", sampleStyle); 寫法二: var sampleStyle:Object = {color: "#FFFFFF", textAlign: "center"}; css.setStyle(".sample", sampleStyle); 【對使用者輸入的文字進行樣式化】 使用defaultTextFormat屬性,樣式會施加至使用者鍵入輸入框的文字身上: var formatter:TextFormat = new TextFormat(); formatter.color = 0x0000FF; //把文字變成藍色 field.defaultTextFormat = formatter; 【對現有文字的一部分進行樣式化】 TextFormat.setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void 【設定文字框的字型】 例子: HTML: field.htmlText = "<font >Formatted text</font>"; TextFormat: formatter.font = "Arial"; CSS: P{ font-family: Arial; } 也可以使用以逗号隔開的字型清單: formatter.font = "Arial, Verdana, Helvetica"; 注意: 字型和字型群組不同.字型群組有三種: _sans,_serif以及_typewriter. _sans群組一般就是指Arial或Helvetica這種字型; _serif群組一般就是指Times或Times New Roman這種字型; _typewriter群組一般就是指Courier或Courier New這種字型. 【嵌入字型】 使用[Embed]後設标簽.[Embed]後設标簽應該出現在ActionScript檔案中,處于類宣告之外.你可以内嵌TrueType字型或系統字型.内嵌TrueType字型時的文法: [Embed(source="pathToTtfFile", fontName="FontName", mimeType="application/x-font-truetype")] pathToTtfFile: ttf檔案的路徑,TrueType字型的路徑可以是相對的,也可以是絕對的; FontName: 字型名稱; 内嵌系統字型的文法: [Embed(systemFont="Times New Roman", fontName="Times New Roman", mimeType="application/x-font-truetype")] fontName: 以相同名稱作為實際系統字型名稱. 注 意: 在使用嵌入字型時,要把TextField的embedFonts屬性設為true,這樣TextField隻能用内嵌字型了.如果你試着替 embedFonts設為true的TextField使用裝置字型,什麼都不會顯示.如果embedFonts設為true,就無法指定以逗号相隔的字 體清單. 【建立可以旋轉的文字】 使用内嵌字型.當你旋轉文字框時,裝置字型就會消失. 【顯示Unicode文字】 1. 從外部來源載入Unicode文字; 2. 假如你的編輯器支援Unicode(如 Flex Builder),則可以直接在ActionScript程式中使用該字元; 3. 使用Unicode轉義字元,ActionScript裡所有Unicode轉義字元都以/u開頭,後面再跟四位十六進制數字. 注意: 如果你想取得Unicode字元,在Windows下使用: 開始>所有程式>附件>系統工具>字元映射表. 【把Flash Player的焦點帶給文字框】 stage.focus = field; 把焦點移除: stage.focus = null; 注意: 當.swf檔案首次載入至網頁浏覽器時,并沒有焦點.是以,以程式的方式把焦點指定給Flash應用程式的一個元素前,必須先把焦點移至Flash Player. 【以ActionScript選取文字】 使用TextField.setSelection(beginIndex:int, endIndex:int):void 為了可以正常選取文字,文字框必須具有焦點: stage.focus = field; //把焦點設給文字框 field.text = "This is example text"; //設定文字 field.setSelection(0, 4); //把"This"這個單詞以高亮顯示 使用隻讀的selectionBeginIndex和selectionEndIndex屬性通路所選取的字元範圍的索引. 【在文字内設定安插點(遊标位置)并通路遊标位置的索引值】 可以使用TextField.setSelection()把起始和結尾的索引參數都設成相同值,在文字内設定遊标位置(假設具有焦點): field.setSelection(0, 0); //在第一個字元前擺放安插點 trace(field.caretIndex); //輸出遊标位置的索引值 【當文本字段受到選取或取消選取時給予響應】 獲得焦點時: FocusEvent.FOCUS_IN 失去焦點時: FocusEvent.FOCUS_OUT 通過鍵盤(Tab鍵)把焦點移除時: FocusEvent.KEY_FOCUS_CHANGE 通過滑鼠把焦點移除時: FocusEvent.MOUSE_FOCUS_CHANGE FocusEvent 類有一個relatedObject屬性.就FOCUS_IN事件而言,relatedObject屬性是剛才擁有焦點的對象的引用位址;對于 FOCUS_OUT,KEY_FOCUS_CHANGE以及MOUSE_FOCUS_CHANGE事件,relatedObject屬性是剛接收到焦點的 對象的引用位址. FOCUS_IN和FOCUS_OUT事件都是在焦點改變後發生的,是以兩者都是不可取消的事件.對于KEY_FOCUS_CHANGE和MOUSE_FOCUS_CHANGE事件,可以使用FocusEvent.preventDefault()方法取消預設行為: field.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, onKeyFocus); private function onKeyFocus(event:FocusEvent):void {      if(field.text == "") {          event.preventDefault(); //當field沒有任何文字前,不允許使用Tab鍵把焦點移除      }      //event.relatedObject就是剛才擁有焦點的對象的引用位址,即下一個獲得焦點的對象的引用位址 }

繼續閱讀