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版本 一.目的:封装了一些控件到自定义的控件库中,方便快速开发 二.实现功能: 基本实现常 ...
随机推荐
- hdu 5310 Souvenir (水)
题意:今天是BestCoder一周年纪念日. 比赛管理员Soda想要给每个参赛者准备一个纪念品. 商店里纪念品的单价是p元, 同时也可以花q元购买纪念品套装, 一个套装里有m个纪念品.今天总共有n个参 ...
- Svn正确的使用方法
想必大家现在都比较喜欢使用svn(subversion)完成代码管理了,因为它的开源,轻巧,易用.但是这样一个宝贝如果不知道其正确的用法,也会让我们百思不得其解,甚至耽误项目进度,浪费程序员的心血和结 ...
- 【Java】List的三种遍历方法
public void List_Test(){ List<String>list = new ArrayList<String>(); for(int i = 0;i < ...
- 【轻院热身赛】级数求和、进制转换、candy
[题目链接:级数求和] Problem A: 级数求和 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 409 Solved: 240 SubmitSt ...
- linux下查看硬件配置的相关命令
from:http://www.jakee.cn/index.php/archives/501.html 常用命令整理如下:查看主板的序列号: dmidecode | grep -i ’serial ...
- 35、Android 性能优化、内存优化
http://blog.csdn.net/a_asinceo/article/details/8222104 http://blog.csdn.net/a_asinceo/article/detail ...
- Oracle 客户端安装 + pl/sql工具安装配置
Oracle 客户端安装 + pl/sql工具安装配置 下载oracle客户端,并在本地安装. 11g下载地址为: http://www.oracle.com/technetwork/databas ...
- webdriver(python) 学习笔记三
知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...
- document.write("\x3c\x54")?是加密了吗?
<script>document.writeln("\x3C\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x22\x48\x54\x5 ...
- quick-x在windows平台打包加密文件
D:\quick-cocos2d-x-2.2.1-rc\bin>compile_scripts -i ..\mygames\myth\scripts -o ..\mygames\myth\res ...