[转载]Flex组件开发总结

http://www.cnblogs.com/aierong/archive/2009/02/09/1386858.html

在平时的Flex开发过程中遇到的问题以及解决办法总结如下:

1.如何监听键盘事件?

<mx:TextArea id="textEditor" keyDown="sendKeyHandler(event)"  x="11" y="366" width="399"/>

private function sendKeyHandler(evt:KeyboardEvent):void {

//Enter 键

        if (evt.keyCode == 13)         {             this.sendTxt();

            return ;         }

}

代码说明:有两种类型的键盘事件:KeyboardEvent.KEY_DOWNKeyboardEvent.KEY_UP

以上是监听的是回车事件

要是想监听组合键,例如:Ctrl+Enter 键,代码如下:

if (evt.keyCode == 13 && evt.ctrlKey) { }

 

2.怎么控制RichTextEditor的控制栏?

利用showControlBar属性,控制RichTextEditor的控制栏,这样把整个控制栏都关闭了

要是想分别控制控制栏中各寄宿控件,可以参考如下代码:

this.textEditor.alignButtons.height=0; this.textEditor.alignButtons.visible=false;

this.textEditor.bulletButton.height=0; this.textEditor.bulletButton.visible=false;

this.textEditor.linkTextInput.height=0; this.textEditor.linkTextInput.visible=false;

this.textEditor._RichTextEditor_VRule1.height=0; this.textEditor._RichTextEditor_VRule1.visible=false;

this.textEditor._RichTextEditor_VRule2.height=0; this.textEditor._RichTextEditor_VRule2.visible=false;

 

当然,还可以参考这文章

http://blog.minidx.com/2008/12/29/1841.html

 

3.控件双击事件(DoubleClick Event)怎么没反应?

<mx:Button doubleClickEnabled="true" doubleClick="doubleClickHandler(event)" x="48" y="32" label="Button"/>

private function doubleClickHandler(evt:MouseEvent):void {     Alert.show("doubleClick"); }

代码说明:

doubleClickEnabled属性:指定对象是否接收 doubleClick 事件。默认值为 false,这意味着在默认情况下,不接收 doubleClick 事件。如果将 doubleClickEnabled 属性设置为 true,实例在其范围内接收 doubleClick 事件

 

4.怎么在TextArea的光标位置插入字符?

<mx:TextArea id="textEditor"  x="11" y="366" width="399"/>

private function insertString(insertStr:String):void {     if (this.textEditor.selectionBeginIndex == this.textEditor.selectionEndIndex)     {         var startPart:String=this.textEditor.text.substring(0, this.textEditor.selectionBeginIndex);         var endPart:String=this.textEditor.text.substring(this.textEditor.selectionEndIndex, this.textEditor.text.length);         startPart+=insertStr;         startPart+=endPart;         this.textEditor.text=startPart;     }     else     {         this.textEditor.text=insertStr;     } }

 

5.实现TextArea控件的滚动条始终保持在最下面?

this.txt_content.addEventListener(FlexEvent.VALUE_COMMIT,VALUE_COMMITHandler); private function VALUE_COMMITHandler(evt:FlexEvent):void{         txt_content.verticalScrollPosition = txt_content.maxVerticalScrollPosition; }

代码说明:这段代码是为了实现TextArea控件的滚动条始终保持在最下面,以方便用户查看聊天信息

要是VBox控件需要实现类似效果,可以看如下代码:

<mx:VBox id="vd" updateComplete="updateCompleteHandler(event)" x="10" y="10" width="399" height="348">

private function updateCompleteHandler(evt:FlexEvent):void {     this.vd.verticalScrollPosition=this.vd.maxVerticalScrollPosition; }

 

 

 

1.复制内容到系统剪贴板 System.setClipboard(strContent);

2.复制一个ArrayCollection

   //dummy solution( well, it works )    var bar:ArrayCollection = new ArrayCollection();    for each ( var i:Object in ac ){        bar.addItem( i );    }    // fantastic ! //    var bar:ListCollectionView = new ListCollectionView( ListCollectionView( ac ).list );

3.打开一个新浏览器窗口 navigateToURL(new URLRequest('http://52friends.com'), '_blank');

4.刷新浏览器 navigateToURL(new URLRequest("javascript:location.reload();"),"_self")

5.关闭浏览器 navigateToURL(new URLRequest("javascript:window.close()"),"_self");

6.设置Alert 窗口的背景为透明 Alert     {     modalTransparency:0.0;       modalTransparencyBlur:0;     }

7.取随机颜色

lbl.setStyle('color', 0xffffff*Math.random());

8.清除子串左侧空格

public function LTrim(s : String):String     {       var i : Number = 0;       while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 || s.charCodeAt(i) == 9)       {         i++;
      }       return s.substring(i,s.length);     }

9.清除字串右侧空格 public function RTrim(s : String):String
    {       var i : Number = s.length - 1;       while(s.charCodeAt(i) == 32 || s.charCodeAt(i) == 13 || s.charCodeAt(i) == 10 ||s.charCodeAt(i) == 9)       {         i--;       }       return s.substring(0,i+1);     }

10.清除字串左右的空格 public function Trim(s : String):String
    {       return LTrim(RTrim(s));     }

11.获取数据类型

getQualifiedClassName(data)

12.生成随机字符串. private function GenerateCheckCode():String
   {        //init        var ran:Number;        var number:Number;        var code:String;        var checkCode:String ="";
       //get 4 radom       for(var i:int=0; i<4; i++)       {
          ran=Math.random();           number =Math.round(ran*10000);            //get result like 0.1234           if(number % 2 == 0)             code = String.fromCharCode(48+(number % 10));        //0's ASCII code is 48           else             code = String.fromCharCode(65+(number % 26)) ;        // A's ASCII code is 65
          checkCode += code;       }       return checkCode;   }

posted @ 2012-07-12 11:24  one light  阅读(184)  评论(0)    收藏  举报