Flex 文字滚动

工作需要,简单demo,直接上图。


遇到的几处需要注意的地方:

1、在所有的 label、box 等 容器啥的加载ok后在执行 move 移动,否则 没效果。愿意貌似 在于渲染的顺序上,未深究。

2、移动的组建 label 或者 text ,他们可以根据文字的多少来取到该组件的宽度。不过去长度之前先要调用  lab.validateNow(),详见API

调用这个方法后,取到的值,才准确。代码中有注释。

原代码如下。

Flex 代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  
				creationComplete="init()" layout="absolute">
	<mx:Script>
		<![CDATA[
			import mx.containers.Box;
			import mx.containers.HBox;
			import mx.containers.VBox;
			import mx.controls.Button;
			import mx.controls.Label;
			import mx.controls.Spacer;
			import mx.core.UIComponent;
			import mx.effects.Move;
			import mx.effects.easing.Linear;
			
			private var box:VBox = new VBox();
			private var labelHieght:int = 30;
			private function init():void
			{
				box.direction = "horizontal";
				box.x = 50;
				box.y = 0;
				box.height = 30;
				box.width = 400;
				box.setStyle('borderColor',0xff0000);
				box.setStyle('borderStyle','solid');
				box.setStyle('borderThickness',2);
				this.addChild(box);
				
				
				lab1.text = "付款申请单--xx冶金有限公司xx冶金有限公司";
				lab2.text = "2013-10-24";
				lab3.text = "进行中...";
				
				box.addChild(hbox);
				
				this.addLabelMove(lab1);
			}
			
			private var amove:Move ;
			private function addLabelMove(lab1:Label):void
			{
				var move:Move  = new Move();
				move.target = lab1;
				
				move.easingFunction = Linear.easeNone;//匀速移动
				lab1.addEventListener(MouseEvent.MOUSE_OUT,move_stop);
				lab1.addEventListener(MouseEvent.MOUSE_OVER,move_do);
				
//				move.xBy = -1000;//按照像素移动
				lab1.validateNow();//注意要调用此方法后才能 使用 lab.textWidth 的值。
				move.xFrom = 240+30;//开始位置。
				move.xTo = 0-lab1.textWidth;//终止位置。
				move.repeatCount = 0; //循环次数 0为不限
				move.repeatDelay = 0; //循环间隔时间 
				move.duration = (lab1.textWidth /50)*1000; //滚动一次所需要的时间 
				move.play();  //开始移动
				amove = move;
			}
			
			/**
			 * 鼠标移开 播放。
			 */ 
			private function move_stop(e:MouseEvent):void
			{
				amove.resume();
			}
			
			/**
			 * 鼠标移入 暂停
			 */ 
			private function move_do(e:MouseEvent):void
			{
				amove.pause();
			}
		]]>
	</mx:Script>
	
	<mx:HBox id="hbox"
			 width="100%" verticalAlign="bottom"
			 verticalScrollPolicy="off" horizontalScrollPolicy="off">
		<mx:Canvas id="cs" width="100%" height="100%" left="0" top="0" verticalScrollPolicy="off" horizontalScrollPolicy="off" >
			<mx:Label id="lab1"
					  truncateToFit="false"
					  mouseChildren="false"
					  useHandCursor="true"
					  buttonMode="true" >
			</mx:Label>
		</mx:Canvas>
		<mx:Label id="lab2" width="20%"/>
		<mx:Label id="lab3" width="20%"/>
	</mx:HBox>	
</mx:Application>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值