Flex组件开发常见问题解决方案

本文和大家重点讨论一Flex组件开发过程中遇到的常见问题及解决方案,相信通过本文的学习你对Flex组件开发有更加深刻的认识。

Flex组件开发总结

1.如何监听键盘事件?

 
 
 
  1. <mx:TextAreaidmx:TextAreaid="textEditor"keyDown="sendKeyHandler(event)"x="11"y="366"width="399"/> 
  2.  
  3. privatefunctionsendKeyHandler(evt:KeyboardEvent):void  
  4. {  
  5.  
  6. //Enter键  
  7.  
  8. if(evt.keyCode==13)  
  9. {  
  10. this.sendTxt();  
  11.  
  12. return;  
  13. }  
  14.  
  15. }  
  16.  

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

以上是监听的是回车事件

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

 
 
 
  1. if(evt.keyCode==13&&evt.ctrlKey)  
  2. {  
  3. }  
  4.  

 2.Flex组件开发时怎么控制RichTextEditor的控制栏?

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

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

 
 
 
  1. this.textEditor.alignButtons.height=0;  
  2. this.textEditor.alignButtons.visible=false;  
  3.  
  4. this.textEditor.bulletButton.height=0;  
  5. this.textEditor.bulletButton.visible=false;  
  6.  
  7. this.textEditor.linkTextInput.height=0;  
  8. this.textEditor.linkTextInput.visible=false;  
  9.  
  10. this.textEditor._RichTextEditor_VRule1.height=0;  
  11. this.textEditor._RichTextEditor_VRule1.visible=false;  
  12.  
  13. this.textEditor._RichTextEditor_VRule2.height=0;  
  14. this.textEditor._RichTextEditor_VRule2.visible=false;  
  15.  

 当然,还可以参考这文章

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

3.Flex组件开发时控件双击事件(DoubleClickEvent)怎么没反应?

 
 
 
  1. <mx:ButtondoubleClickEnabledmx:ButtondoubleClickEnabled="true"doubleClick="doubleClickHandler(event)"x="48"y="32"label="Button"/> 
  2.  
  3. privatefunctiondoubleClickHandler(evt:MouseEvent):void  
  4. {  
  5. Alert.show("doubleClick");  
  6. }  
  7.  

 代码说明:

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

4.Flex组件开发时怎么在TextArea的光标位置插入字符?

 
 
 
  1. <mx:TextAreaidmx:TextAreaid="textEditor"x="11"y="366"width="399"/> 
  2.  
  3. privatefunctioninsertString(insertStr:String):void  
  4. {  
  5. if(this.textEditor.selectionBeginIndex==this.textEditor.selectionEndIndex)  
  6. {  
  7. varstartPart:String=this.textEditor.text.substring(0,this.textEditor.selectionBeginIndex);  
  8. varendPart:String=this.textEditor.text.substring(this.textEditor.selectionEndIndex,  
  9. this.textEditor.text.length);  
  10. startPart+=insertStr;  
  11. startPart+=endPart;  
  12. this.textEditor.text=startPart;  
  13. }  
  14. else  
  15. {  
  16. this.textEditor.text=insertStr;  
  17. }  
  18. }  
  19.  

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

 
 
 
  1. this.txt_content.addEventListener(FlexEvent.VALUE_COMMIT,VALUE_COMMITHandler);  
  2. privatefunctionVALUE_COMMITHandler(evt:FlexEvent):  
  3. void{txt_contenttxt_content.verticalScrollPosition=  
  4. txt_content.maxVerticalScrollPosition;  
  5. }  
  6.  

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

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

 
 
 
  1. <mx:VBoxidmx:VBoxid="vd"updateComplete="updateCompleteHandler(event)"
  2. x="10"y="10"width="399"height="348"> 
  3.  
  4. privatefunctionupdateCompleteHandler(evt:FlexEvent):void  
  5. {  
  6. thisthis.vd.verticalScrollPosition=this.vd.maxVerticalScrollPosition;  
  7. }  
  8.  

【编辑推荐】

  1. Flex组件开发总结
  2. 从Flex Builder更名看Flash平台战略
  3. Flex及FlexBuilder2.0开发环境详解
  4. FlexBuilder3.0与Eclipse3.4的***结合
  5. 学习笔记 FlexBuilder2.0中如何使用基于Lists的控件 

 

 

 

THE END