Flex “跑马灯”效果(自定义“跑马灯”控件)
自定义类(BroadCastMarquee.as): package marquee
{
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.utils.Timer; import mx.core.UIComponent; /**
*
* 信息滚动显示(跑马灯控件)
* @version
* <pre>
* 修改版本: 1.0.0
* 修改日期:2009-1-15
* 修改人 : zhang
* 修改说明:形成初始版本
*</pre>
*
* * 功能:
* 1.直接将某TextField转换为跑马灯文本 changeTextFieldToMarqueeText
* 2.动态设定显示宽度 width
* 3.动态设定一次移动间隔时间 delay
* 4.动态设定一次移动间隔距离 step
* 5.设定默认文本显示样式 defaultTextFormat
* 6.动态设定文本显示样式 setTextFormat
* */
public class BroadCastMarquee extends UIComponent
{ [Bindable]
private var broadcastText:String="broadcast message"; private var m_timer:Timer; private var m_DefaultText_X:Number=0; //每次移动距离
private var m_step:Number=10; //滚动范围
private var m_rect:Rectangle; //移动时间间隔
private var t_delay:Number=100; //广播信息滚动宽度
private var m_Width:Number; //滚动方向属性
[Inspectable(defaultValue="left",enumeration="right,left", category="direction", type="String")]
public var ScrollDirection:String="left"; //显示内容样式
[Bindable]
private var m_TextFormat:TextFormat=new TextFormat("Verdana","10","#0b333c"); /**广播信息内容显示控件*/
private var m_BroadCastText:TextField; // private var m_BroadcastLabel:Label; public function BroadCastMarquee()
{
super(); InitBroadcast(); addEventListener(MouseEvent.MOUSE_OVER,rollOverHandler);
addEventListener(MouseEvent.ROLL_OUT, rollOutHandler); } /**初始化*/
private function InitBroadcast():void
{
/**广播信息显示控件初始化*/
m_BroadCastText=new TextField();
m_BroadCastText.autoSize=TextFieldAutoSize.LEFT;
m_BroadCastText.multiline=false;
m_BroadCastText.selectable=false;
m_BroadCastText.x=m_BroadCastText.y=m_DefaultText_X
m_BroadCastText.wordWrap=false;
m_BroadCastText.text=broadcastText;
//m_BroadCastText.defaultTextFormat=m_TextFormat;
addChild(m_BroadCastText); this.m_Width=this.width;
m_rect=new Rectangle(0,0,this.width,this.m_BroadCastText.textHeight);
this.m_BroadCastText.scrollRect=m_rect; m_timer = new Timer(t_delay); ScrollBroadText(); } /**
* 如果有新的广播消息,或者长度改变进行滚动显示
* */
private function ScrollBroadText():void
{
if(this.m_timer!=null)
{
//停止移动
StopMoveBroadcast(); if(this.broadcastText!="")
{
m_timer.addEventListener(TimerEvent.TIMER, timerhandler);
m_timer.start();
}
// Math.abs( }
} /**控制滚动信息*/
private function timerhandler(evt:TimerEvent):void
{
if(this.m_BroadCastText.textWidth>0)
{ if(ScrollDirection.toLowerCase()=="left")
{ if(m_rect.x<=this.m_BroadCastText.textWidth)
{
// this.m_BroadCastText.x+=(-this.m_step);
m_rect.x+=this.m_step; }else
{
//this.m_BroadCastText.x=m_DefaultText_X+this.m_BroadCastText.textWidth;
m_rect.x=-(m_DefaultText_X+this.m_Width);
} }else
{ if(Math.abs(m_rect.x)<=this.m_BroadCastText.textWidth)
{
m_rect.x-=this.m_step; }else
{
this.m_rect.x=m_DefaultText_X; } } m_BroadCastText.scrollRect = m_rect; }else
{
//停止移动
StopMoveBroadcast();
} } /**停止移动*/
private function StopMoveBroadcast():void
{
if(m_timer!=null)
{
this.m_timer.stop();
if(m_timer.hasEventListener(TimerEvent.TIMER))
m_timer.removeEventListener(TimerEvent.TIMER, timerhandler); m_BroadCastText.x=this.m_DefaultText_X;
m_rect.height = m_BroadCastText.height;
// this.height=m_rect.height;
m_BroadCastText.scrollRect = m_rect;
}
} /**************************广播信息处理事件*********************************/ /**鼠标经过处理事件*/
protected function rollOverHandler(event:MouseEvent):void
{
if(this.m_timer!=null&&this.broadcastText!="")
{
this.m_timer.stop();
}
} /**鼠标离开处理事件*/
protected function rollOutHandler(event:MouseEvent):void
{
if(this.m_timer!=null&&this.broadcastText!="")
{
this.m_timer.start();
}
} /**************************广播信息属性*************************************/ /**移动时间间隔*/
public function set BroadCastDeplay(value:Number):void
{
this.m_timer.delay=value;
} /**设置广播信息内容*/
public function set BroadCastText(value:String):void
{
this.m_BroadCastText.text=value;
ScrollBroadText();
} /**取得广播信息内容*/
public function get BroadCastText():String
{
return this.broadcastText;
} /**广播信息宽度宽度*/
public override function get width():Number
{
return this.m_Width;
} public override function set width(width:Number):void
{
this.m_Width=width;
this.m_rect.width=this.m_Width;
this.m_BroadCastText.scrollRect=this.m_rect;
ScrollBroadText();
// this.m_BroadCastText.setTextFormat
} /**设置滚动方向('left' or 'right')*/
public function set Direction(value:String):void
{
this.ScrollDirection=value;
ScrollBroadText();
} /**设置字体格式化样式*/
public function set defaultTextFormat(format:TextFormat):void
{
this.m_BroadCastText.defaultTextFormat=format;
this.setTextFormat(format);
//
} public function setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void
{
m_BroadCastText.setTextFormat(format, beginIndex, endIndex);
ScrollBroadText();
} /**字体大小*/
public function set fontSize(value:Object):void
{
this.m_TextFormat=new TextFormat(this.m_TextFormat.font,value,this.m_TextFormat.color);
this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1); } /**字体名称*/
public function set fontFamily(value:String):void
{
this.m_TextFormat=new TextFormat(value,this.m_TextFormat.size,this.m_TextFormat.color);
this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1);
} /**字体颜色*/
public function set color(value:Object):void
{
this.m_TextFormat=new TextFormat(this.m_TextFormat.font,this.m_TextFormat.size,value);
this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1);
} /**是否是粗体*/
public function set fontWeight(value:Object):void
{
this.m_TextFormat=new TextFormat(this.m_TextFormat.font,this.m_TextFormat.size,this.m_TextFormat.color,value)
this.m_BroadCastText.setTextFormat(this.m_TextFormat,-1,-1);
}
}
}
TestBroadCastMarquee.mxml :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" xmlns:marquee="marquee.*">
<marquee:BroadCastMarquee width="500" height="25" BroadCastDeplay="800" BroadCastText="公告:火爆商品等你拿!" ScrollDirection="left">
</marquee:BroadCastMarquee>
</mx:Application>
--------------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"> <mx:Script>
<![CDATA[
private function fade_click():void {
fader.stop();
fader.play([box]);
} private function wipe_click():void {
wiper.stop();
wiper.play([box]);
}
]]>
</mx:Script> <mx:Sequence id="fader">
<mx:Fade alphaFrom="0.0" alphaTo="1.0" />
<mx:Pause duration="{slider.value}" />
<mx:Fade alphaFrom="1.0" alphaTo="0.0" />
</mx:Sequence> <mx:Sequence id="wiper">
<mx:SetPropertyAction name="alpha" value="1.0" />
<mx:WipeRight showTarget="true" />
<mx:Pause duration="{slider.value}" />
<mx:WipeRight showTarget="false" />
<mx:SetPropertyAction name="alpha" value="0.0" />
</mx:Sequence> <mx:ApplicationControlBar dock="true">
<mx:Button label="fade box"
click="fade_click();" />
<mx:Button label="wipe box"
click="wipe_click();" /> <mx:Spacer width="100%" /> <mx:Label text="effect pause ({slider.value} ms):" />
<mx:HSlider id="slider"
minimum="1000"
maximum="3000"
value="1500"
labels="[1000,2000,3000]"
liveDragging="true"
showTrackHighlight="true"
snapInterval="100"
tickInterval="500"
dataTipPrecision="0" />
</mx:ApplicationControlBar> <mx:Box id="box"
width="100%"
height="100%"
backgroundColor="haloSilver"
alpha="0.0" /> </mx:Application>
Flex “跑马灯”效果(自定义“跑马灯”控件)的更多相关文章
- jQ效果:jQuery和css自定义video播放控件
下面介绍一下通过jquery和css自定义video播放控件. Html5 Video是现在html5最流行的功能之一,得到了大多数最新版本的浏览器支持.包括IE9,也是如此.不同的浏览器提供了不同的 ...
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面
个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...
- Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面 z
http://www.cnblogs.com/zuowj/p/4504130.html 不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景 也最为 ...
- c#自定义液晶数字控件
c#自定义液晶数字控件 项目中经常与硬件打交道,LED显示屏上面的液晶数字很好看,QT中直接就有数码管这个控件,C#中自己来写一个,其实掌握了一种自定义控件的写法,其他的都是浮云,举一反三,最笨的 ...
- Angular19 自定义表单控件
1 需求 当开发者需要一个特定的表单控件时就需要自己开发一个和默认提供的表单控件用法相似的控件来作为表单控件:自定义的表单控件必须考虑模型和视图之间的数据怎么进行交互 2 官方文档 -> 点击前 ...
- C#自定义Button按钮控件
C#自定义Button按钮控件 在实际项目开发中经常可以遇到.net自带控件并不一定可以满足需要,因此需要自定义开发一些新的控件,自定义控件的办法也有多种,可以自己绘制线条颜色图形等进行重绘,也可以采 ...
- WPF 自定义ComboBox样式,自定义多选控件
原文:WPF 自定义ComboBox样式,自定义多选控件 一.ComboBox基本样式 ComboBox有两种状态,可编辑和不可编辑状态.通过设置IsEditable属性可以切换控件状态. 先看基本样 ...
- (转载)Android自定义标签列表控件LabelsView解析
Android自定义标签列表控件LabelsView解析 作者 donkingliang 关注 2017.03.15 20:59* 字数 759 阅读 406评论 0喜欢 3 无论是在移动端的App, ...
- C# WinForm自定义通用分页控件
大家好,前几天因工作需要要开发一个基于WinForm的小程序.其中要用到分页,最开始的想法找个第三方的dll用一下,但是后来想了想觉得不如自己写一个玩一下 之前的web开发中有各式各样的列表组件基本都 ...
- 示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本
原文:示例:自定义WPF底层控件UI库 HeBianGu.General.WpfControlLib V2.0版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...
随机推荐
- 30种oracle常见的等待事件说明
1Buffer busy waits从本质上讲,这个等待事件的产生仅说明了一个会话在等待一个Buffer(数据块),但是导致这个现象的原因却有很多种.常见的两种是: 当一个会话视图修改一个数据块,但这 ...
- 连接Excel时出现未指定的错误
使用 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended ...
- validator的验证
通常喜欢这么写验证 <form method="post" data-ajax="false" action="/Shppping/PlaceO ...
- CF 577C Vasya and Petya's Game
题意:一个游戏,A童鞋在1~n的范围里猜一个数,B童鞋询问一个集合,A童鞋要对集合里每个数做出回答,他猜的数能否给整除,B要通过这些答案得到A猜的数,最少需要猜哪些数? 解法:一个数可以由若干个质数的 ...
- RESTLET开发实例(一)基于JAX-RS的REST服务
RESTLET介绍 Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架.它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务. Restlet项 ...
- android桌面小火箭升空动画
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceS ...
- 用javascript 面向对象制作坦克大战(二)
2. 完善地图 我们的地图中有空地,墙,钢,草丛,水,总部等障碍物. 我们可以把这些全部设计为对象. 2.1 创建障碍物对象群 对象群保存各种地图上的对象,我们通过对象的属性来判断对 ...
- Selenium IDE 测试
Selenium IDE 测试 调试是为了发现和修复测试脚本,任何脚本开发的共同步骤是错误的处理.为了使这一过程更加稳固,我们可以使用Selenium IDE的一个插件叫“Power Debugger ...
- duilib中控件拖拽功能的实现方法(附源码)
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41144283 duilib库中原本没有显示的对控件增加拖拽的功能,而实际 ...
- Struts2动态调用DMI及错误解决方法
在Strust2中action可以定义自己的方法,调用方法有两种方式,一种方式是struts.xml中指定method来表示需要用到的方法, 但是这种方法缺点在于如果你的Action中有很多方法则要多 ...