flexMarquee 组件flexMarquee.mxml的代码:

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="complete()"
 fontSize="13" horizontalCenter="0" verticalCenter="0" borderThicknessLeft="2" borderThicknessBottom="2"
  borderThicknessRight="2" borderThicknessTop="2">
 <mx:Script>
  <![CDATA[
   import mx.controls.Alert;
   private var durationtime:Number;
   public var durationTime:Number=5000;
   public var mode:String="vb2t";//vb2t:下往上滚动;vt2b:上往下滚动;hl2r:左往右滚动;hr2l:右往左滚动
   public var marqueeText:String="flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here<br>flexMarquee text here";
   
   private function complete():void
   {
    if(this.title==""){
     this.setStyle("headerHeight",0);
     //重新定义cs的高度
     cs.height+=28;
    }
    //假如没有标题,将PANEL的headerHeight设为0
    if(mode=="hl2r" || mode=="hr2l"){
     tt.height=25;
     this.height=(this.title==""?28:60);
     cs.height=23;
     tt.x=3;
     tt.y=1;
     var tempA:Array;
     if(marqueeText.indexOf("<br>")>=0){
      tempA=marqueeText.split("<br>");
      marqueeText=tempA.join("    ");
     }
     if(marqueeText.indexOf("<br>")>=0){
      tempA=marqueeText.split("<br>");
      marqueeText=tempA.join("    ");
     }
    }else{
     tt.width=cs.width-6;
     tt.x=3;
     tt.y=1;
    }
    tt.htmlText=marqueeText;
    tt.validateNow();
    if(mode=="hl2r" || mode=="hr2l"){
     durationtime=(tt.textWidth<=250?durationTime:Math.round(tt.textWidth/250*durationTime));
    }else{
     durationtime=(tt.textHeight<=250?durationTime:Math.round(tt.textHeight/250*durationTime));
    }
    //设置文字。若为横向移动,将换行符改为适当的空格
    //根据不同模式调整区域大小及文字滚动的方向
    switch(mode){
     case "hl2r":
      
      move_up.xFrom=0-tt.textWidth+6;
      move_up.xTo=cs.width-6;
      break;
     case "hr2l":
      move_up.xFrom=cs.width-6;
      move_up.xTo=0-tt.textWidth+6;
      break;
     case "vt2b":
      move_up.yFrom=0-tt.textHeight+6;
      move_up.yTo=cs.height-6;
      break;
     default:
      //Alert.show(tt.height+"---"+tt.textHeight);
      move_up.yFrom=cs.height - 6;
      move_up.yTo=0 - tt.textHeight + 6;
    }
    move_up.repeatCount=0;
    //loop 
    move_up.repeatDelay=0;
    //loop time 
    move_up.duration=durationtime;
    //the time of scroll once 
    move_up.play();
   }

   private function move_pause():void
   {
    move_up.pause();
   //pause 
   }

   private function move_resume():void
   {
    move_up.resume();
   //start from the pause position 
   }
  ]]>
 </mx:Script>
 <mx:Move id="move_up" target="{tt}"/>
 <mx:Canvas id="cs" width="100%" height="100%" left="0" top="0" verticalScrollPolicy="off" horizontalScrollPolicy="off" mouSEOver="move_pause()" mouSEOut="move_resume()">
  <mx:Text id="tt" left="3" top="1" horizontalCenter="0" verticalCenter="0">
  </mx:Text>
 </mx:Canvas>
</mx:Panel>

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...