zoukankan      html  css  js  c++  java
  • [转] 用flex4制作跑马灯效果

    自定义类 BroadCastMarquee.as

      1 package utils
      2 {
      3     import flash.events.MouseEvent;
      4     import flash.events.TimerEvent;
      5     import flash.geom.Rectangle;
      6     import flash.text.TextField;
      7     import flash.text.TextFieldAutoSize;
      8     import flash.text.TextFormat;
      9     import flash.utils.Timer;
     10     
     11     import mx.core.UIComponent;
     12     
     13     public class BroadCastMarquee extends UIComponent
     14     {    
     15         
     16         [Bindable] 
     17         private var broadcastText:String="broadcast message"
     18         
     19         private var m_timer:Timer
     20         
     21         private var m_DefaultText_X:Number=0
     22         
     23         //每次移动距离 
     24         private var m_step:Number=10
     25         
     26         //滚动范围 
     27         private var m_rect:Rectangle; 
     28         
     29         //移动时间间隔 
     30         private var t_delay:Number=100
     31         
     32         //广播信息滚动宽度 
     33         private var m_Width:Number; 
     34         
     35         //滚动方向属性 
     36         [Inspectable(defaultValue="left",enumeration="right,left", category="direction", type="String")] 
     37         public var ScrollDirection:String="left";         
     38         
     39         //显示内容样式 
     40         [Bindable] 
     41         private var m_TextFormat:TextFormat=new TextFormat("Verdana","10","#0b333c"); 
     42         
     43         /**广播信息内容显示控件*/ 
     44         private var m_BroadCastText:TextField; 
     45         
     46         // private var m_BroadcastLabel:Label; 
     47         
     48         public function BroadCastMarquee() 
     49         { 
     50             super(); 
     51             
     52             InitBroadcast(); 
     53             
     54             addEventListener(MouseEvent.MOUSE_OVER,rollOverHandler); 
     55             addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);             
     56         } 
     57         
     58         /**初始化*/ 
     59         private function InitBroadcast():void 
     60         { 
     61             /**广播信息显示控件初始化*/ 
     62             m_BroadCastText=new TextField(); 
     63             m_BroadCastText.autoSize=TextFieldAutoSize.LEFT; 
     64             m_BroadCastText.multiline=false
     65             m_BroadCastText.selectable=false
     66             m_BroadCastText.x=m_BroadCastText.y=m_DefaultText_X 
     67             m_BroadCastText.wordWrap=false
     68             m_BroadCastText.text=broadcastText; 
     69             //m_BroadCastText.defaultTextFormat=m_TextFormat; 
     70             addChild(m_BroadCastText); 
     71             
     72             
     73             this.m_Width=this.width; 
     74             m_rect=new Rectangle(0,0,this.width,this.m_BroadCastText.textHeight); 
     75             this.m_BroadCastText.scrollRect=m_rect; 
     76             
     77             m_timer = new Timer(t_delay); 
     78             
     79             ScrollBroadText(); 
     80         }  
     81         
     82         /**
     83          * 如果有新的广播消息,或者长度改变进行滚动显示
     84          * */ 
     85         private function ScrollBroadText():void 
     86         { 
     87             if(this.m_timer!=null
     88             { 
     89                 //停止移动 
     90                 StopMoveBroadcast(); 
     91                 
     92                 if(this.broadcastText!=""
     93                 { 
     94                     m_timer.addEventListener(TimerEvent.TIMER, timerHandler); 
     95                     m_timer.start(); 
     96                 }
     97             } 
     98         } 
     99         
    100         /**控制滚动信息*/ 
    101         private function timerHandler(evt:TimerEvent):void 
    102         { 
    103             if(this.m_BroadCastText.textWidth>0
    104             { 
    105                 
    106                 if(ScrollDirection.toLowerCase()=="left"
    107                 { 
    108                     
    109                     if(m_rect.x<=this.m_BroadCastText.textWidth) 
    110                     { 
    111                         //  this.m_BroadCastText.x+=(-this.m_step); 
    112                         m_rect.x+=this.m_step; 
    113                         
    114                     }else 
    115                     { 
    116                         //this.m_BroadCastText.x=m_DefaultText_X+this.m_BroadCastText.textWidth; 
    117                         m_rect.x=-(m_DefaultText_X+this.m_Width); 
    118                     } 
    119                 }
    120                 else 
    121                 { 
    122                     
    123                     if(Math.abs(m_rect.x)<=this.m_BroadCastText.textWidth) 
    124                     { 
    125                         m_rect.x-=this.m_step;                         
    126                     }
    127                     else 
    128                     { 
    129                         this.m_rect.x=m_DefaultText_X;                        
    130                     }                     
    131                 }                
    132                 m_BroadCastText.scrollRect = m_rect;   
    133                 
    134             }else 
    135             { 
    136                 //停止移动 
    137                 StopMoveBroadcast(); 
    138             } 
    139         } 
    140         
    141         /**停止移动*/ 
    142         private function StopMoveBroadcast():void 
    143         { 
    144             if(m_timer!=null
    145             { 
    146                 this.m_timer.stop(); 
    147                 if(m_timer.hasEventListener(TimerEvent.TIMER)) 
    148                     m_timer.removeEventListener(TimerEvent.TIMER, timerHandler); 
    149                 
    150                 m_BroadCastText.x=this.m_DefaultText_X; 
    151                 m_rect.height = m_BroadCastText.height; 
    152                 // this.height=m_rect.height; 
    153                 m_BroadCastText.scrollRect = m_rect; 
    154             } 
    155         } 
    156         
    157         
    158         /**************************广播信息处理事件*********************************/ 
    159         
    160         /**鼠标经过处理事件*/ 
    161         protected function rollOverHandler(event:MouseEvent):void 
    162         { 
    163             if(this.m_timer!=null&&this.broadcastText!=""
    164             { 
    165                 this.m_timer.stop(); 
    166             } 
    167         } 
    168         
    169         /**鼠标离开处理事件*/ 
    170         protected function rollOutHandler(event:MouseEvent):void 
    171         { 
    172             if(this.m_timer!=null&&this.broadcastText!=""
    173             { 
    174                 this.m_timer.start(); 
    175             } 
    176         }        
    177         
    178         /**************************广播信息属性*************************************/ 
    179         
    180         /**移动时间间隔*/ 
    181         public function set BroadCastDeplay(value:Number):void 
    182         { 
    183             this.m_timer.delay=value;          
    184         } 
    185         
    186         /**设置广播信息内容*/ 
    187         public function set BroadCastText(value:String):void 
    188         { 
    189             this.m_BroadCastText.text=value; 
    190             ScrollBroadText(); 
    191         } 
    192         
    193         /**取得广播信息内容*/ 
    194         public function get BroadCastText():String 
    195         { 
    196             return this.broadcastText; 
    197         } 
    198         
    199         
    200         /**广播信息宽度宽度*/ 
    201         public override function get width():Number 
    202         { 
    203             return this.m_Width; 
    204         } 
    205         
    206         public override function set width(Number):void 
    207         { 
    208             this.m_Width=width; 
    209             this.m_rect.width=this.m_Width; 
    210             this.m_BroadCastText.scrollRect=this.m_rect; 
    211             ScrollBroadText(); 
    212             //this.m_BroadCastText.setTextFormat 
    213         } 
    214         
    215         
    216         /**设置滚动方向('left' or 'right')*/ 
    217         public function set Direction(value:String):void 
    218         { 
    219             this.ScrollDirection=value; 
    220             ScrollBroadText(); 
    221         } 
    222         
    223         
    224         /**设置字体格式化样式*/ 
    225         public function set defaultTextFormat(format:TextFormat):void 
    226         { 
    227             this.m_BroadCastText.defaultTextFormat=format; 
    228             this.setTextFormat(format);            
    229         } 
    230         
    231         public function setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void 
    232         { 
    233             m_BroadCastText.setTextFormat(format, beginIndex, endIndex); 
    234             ScrollBroadText(); 
    235         } 
    236         
    237         
    238         /**字体大小*/ 
    239         public function set fontSize(value:Object):void 
    240         { 
    241             this.m_TextFormat=new TextFormat(this.m_TextFormat.font,value,this.m_TextFormat.color); 
    242             this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1); 
    243             
    244         } 
    245         
    246         /**字体名称*/ 
    247         public function set fontFamily(value:String):void 
    248         { 
    249             this.m_TextFormat=new TextFormat(value,this.m_TextFormat.size,this.m_TextFormat.color); 
    250             this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1); 
    251         } 
    252         
    253         /**字体颜色*/ 
    254         public function set color(value:Object):void 
    255         { 
    256             this.m_TextFormat=new TextFormat(this.m_TextFormat.font,this.m_TextFormat.size,value); 
    257             this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1); 
    258         } 
    259         
    260         /**是否是粗体*/ 
    261         public function set fontWeight(value:Object):void 
    262         { 
    263             this.m_TextFormat=new TextFormat(this.m_TextFormat.font,this.m_TextFormat.size,this.m_TextFormat.color,value) 
    264             this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1); 
    265         } 
    266     }   
    267 }
    268 

    在mxml文件中:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
     3                xmlns:s="library://ns.adobe.com/flex/spark" 
     4                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:utils="utils.*">
     5     <fx:Declarations>
     6         <!-- Place non-visual elements (e.g., services, value objects) here -->
     7     </fx:Declarations>
     8     
     9     <utils:BroadCastMarquee width="888" height="25" BroadCastDeplay="800"  BroadCastText="公告:火爆商品等你拿!" ScrollDirection="left">
    10         
    11     </utils:BroadCastMarquee>
    12 </s:Application>
    13 
  • 相关阅读:
    Python之描述器
    Python魔术方法
    Python二分法查找
    Qt连接oracle
    oracle11g下载安装
    Qwidget,QMainWindow ,Qdialog
    动态库
    静态库
    Qt翻译文件
    Qt 日志界面类
  • 原文地址:https://www.cnblogs.com/sange/p/1807544.html
Copyright © 2011-2022 走看看