采用 spark textArea linkElement spanElement 实现聊天窗口的功能

来源:互联网 发布:淘宝店铺广告 编辑:程序博客网 时间:2024/05/20 12:51

实现聊天窗口的功能,可以设置字体,字号 获得点击的玩家昵称,全部代码如下,俺不知道如何上传附件:)

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
 <s:layout>
  <s:BasicLayout/>
 </s:layout>
 <fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import flashx.textLayout.elements.ParagraphElement;
   import flashx.textLayout.events.FlowElementMouseEvent;
   private var idplayer:int = 0;
   protected function button1_clickHandler(event:MouseEvent):void
   {
    // TODO Auto-generated method stub
    
    var linkPar:ParagraphElement = new ParagraphElement();
    var linkEl:LinkElement = new LinkElement();
    var span1:SpanElement = new SpanElement();
    span1.text = "Adobe " + idplayer++;
    span1.color = "0xFF0000";
    span1.fontSize = 24;
    linkEl.addChild(span1);
    linkPar.addChild(linkEl);
    
    var span2:SpanElement = new SpanElement();
    span2.text ="text text text";
    span2.color = "0xFF00FF";
    span2.fontSize = 20;
    
    linkPar.addChild(span2);   
    textArea.textFlow.addChild(linkPar);
    linkEl.addEventListener(FlowElementMouseEvent.CLICK,linkClickHandler);
    textArea.textFlow.flowComposer.updateAllControllers();

    //  使拖动条拖到最底

    textArea.validateNow();
   textArea.scroller.verticalScrollBar.value = 
   textArea.scroller.verticalScrollBar.maxHeight;
   }
   private function linkClickHandler(event:FlowElementMouseEvent):void
   {
    trace(event.flowElement.getText());
    lab.text = "人物昵称:" + event.flowElement.getText();
   }
  ]]>
 </fx:Script>
 <s:Button click="button1_clickHandler(event)" x="200" label="发送" />
 <!--关键点:需要设置textArea.editable = false; 如果没有 <s:a></s:a> 点击获取玩家昵称也不行!!!-->
 <s:TextArea x="400" editable="false" id="textArea" >
  <s:content>
   this is <s:span color="0xFF0000">
      html text
     </s:span>
   <s:a click="linkClickHandler(event)" >
    <s:span color="0x00FF00">
     link text
    </s:span>
   </s:a>
  </s:content>
 </s:TextArea>
 <s:Label id="lab" x="200" y="100" />
</s:Application>