Flex【原创】首尾相连的循环文本滚动简单实现

思路比较简单,准备一个主文本的副本用于辅助滚动,当主文本滚动出界时辅助文本开始滚动。

不废话,上代码。

  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"
  5                frameRate="60"
  6                applicationComplete="applicationCompleteHandler(event)">
  7
  8     <fx:Style>
  9         @namespace s "library://ns.adobe.com/flex/spark";
 10         @namespace mx "library://ns.adobe.com/flex/mx";
 11         s|Label
 12         {
 13             fontFamily:‘Microsoft Yahei‘;
 14             fontSize:12;
 15         }
 16     </fx:Style>
 17
 18     <fx:Script>
 19         <![CDATA[
 20             import mx.events.EffectEvent;
 21             import mx.events.FlexEvent;
 22
 23             import spark.effects.easing.Linear;
 24
 25             private var fromX:Number
 26             private var spew:Number;
 27             private var duration:Number = 30000;
 28
 29             protected function applicationCompleteHandler(event:FlexEvent):void
 30             {
 31                 masker.graphics.beginFill(0,1);
 32                 masker.graphics.drawRect(-textContainer.width/2,-textContainer.height/2,textContainer.width,textContainer.height);
 33                 masker.graphics.endFill();
 34                 textContainer.mask = masker;
 35
 36                 spew = textContainer.width - textGroup.width;
 37
 38                 fromX = -textGroup2.width;
 39                 textGroup.x = fromX;
 40                 textGroup2.x = fromX;
 41
 42                 moveEff.duration = duration;
 43                 moveEff.xTo = textContainer.width;
 44                 moveEff.play();
 45             }
 46
 47             protected function moveEff_effectUpdateHandler(event:EffectEvent):void
 48             {
 49                 if(textGroup.x >= spew)
 50                 {
 51                     if(!moveEff2.isPlaying)
 52                     {
 53                         moveEff2.duration = duration;
 54                         moveEff2.xTo = textContainer.width;
 55                         moveEff2.play();
 56                     }
 57                 }
 58             }
 59
 60             protected function moveEff_effectEndHandler(event:EffectEvent):void
 61             {
 62                 textGroup.x = fromX;
 63             }
 64
 65             protected function moveEff2_effectUpdateHandler(event:EffectEvent):void
 66             {
 67                 if(textGroup2.x >= spew)
 68                 {
 69                     if(!moveEff.isPlaying)
 70                     {
 71                         moveEff.duration = duration;
 72                         moveEff.xTo = textContainer.width;
 73                         moveEff.play();
 74                     }
 75                 }
 76             }
 77
 78             protected function moveEff2_effectEndHandler(event:EffectEvent):void
 79             {
 80                 textGroup2.x = fromX;
 81             }
 82
 83         ]]>
 84     </fx:Script>
 85     <fx:Declarations>
 86         <s:Move id="moveEff" target="{textGroup}" easer="{new Linear(0,0)}"
 87                 effectUpdate="moveEff_effectUpdateHandler(event)"
 88                 effectEnd="moveEff_effectEndHandler(event)"/>
 89         <s:Move id="moveEff2" target="{textGroup2}" easer="{new Linear(0,0)}"
 90                 effectUpdate="moveEff2_effectUpdateHandler(event)"
 91                 effectEnd="moveEff2_effectEndHandler(event)"/>
 92     </fx:Declarations>
 93     <s:SpriteVisualElement id="masker" verticalCenter="0" horizontalCenter="0" mouseEnabled="false"/>
 94     <s:BorderContainer width="600" height="480" verticalCenter="0" horizontalCenter="0">
 95         <s:Group id="textContainer" width="100%" height="100%" left="3" top="3" bottom="3" right="3">
 96
 97             <s:HGroup id="textGroup2"
 98                       mouseOver="moveEff2.pause();moveEff.pause()"
 99                       mouseOut="moveEff2.resume();moveEff.resume()">
100                 <s:Button label="我在滚动吗"/>
101                 <s:Button label="文本循环滚动"/>
102                 <s:Button label="文本滚动"/>
103                 <s:Button label="头尾相连的滚动"/>
104                 <s:Button label="你说我是不是在滚动"/>
105             </s:HGroup>
106
107             <s:HGroup id="textGroup"
108                       mouseOver="moveEff.pause();moveEff2.pause()"
109                       mouseOut="moveEff.resume();moveEff2.resume()">
110                 <s:Button label="我在滚动吗"/>
111                 <s:Button label="文本循环滚动"/>
112                 <s:Button label="文本滚动"/>
113                 <s:Button label="头尾相连的滚动"/>
114                 <s:Button label="你说我是不是在滚动"/>
115             </s:HGroup>
116
117         </s:Group>
118     </s:BorderContainer>
119 </s:Application>

效果图:

时间: 2024-11-20 05:50:58

Flex【原创】首尾相连的循环文本滚动简单实现的相关文章

兼容各种浏览器的文字循环无缝滚动效果

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>中国站长天空-网页特效-文

android如何写一个循环文字滚动的TextView

效果图: 在layout中这样来声明: <com.kaixin001.view.ScrollText android:id="@+id/news_statustxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="1

史上最详细 纯CSS打造3D文本滚动

昨天看见了一篇文章关于用纯CSS实现文本滚动,在这里跟大家分享一下. 首先把效果图贴给大家 根据效果图我们很容易发现肯定是要用到3D转换的,如果对这个还不是很了解的可以先看看下面的文章 http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/comment-page-1/ http://www.w3cplus.com/blog/tags/95.html 那么首先我们就

JavaScript实现竖直文本滚动

一.HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="

图片左右循环连续滚动代码,解决marquee的留白问题

<marquee ONMOUSEOUT="this.start()" ONMOUSEOVER="this.stop()" DIRECTION="LEFT" scrollamount=3 behavior="scroll" loop="-1" deplay="0"> <table> <tr> <td> <a href="htt

flex的Accordion组件头部文本居中显示

flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 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/spar

【FLEX&amp;YACC】第二天制作一个简单计算器

首先写词法分析器: 词法分析器要返回记号: "+" 返回ADD "-" 返回SUB "*" 返回MUL "/" 返回DIV 输入的实数全部被当作double类型处理 换行符返回CR calc.l: %{#include <stdio.h>#include "y.tab.h"int yywrap(void){ /*免链接库文件*/    return 1;}%}%%[ \t]    { ;}&qu

(五十)TextView文本滚动效果实现

一.若要让TextView里的文本滚动,必须满足以下几个因素: 1.TextView里文本宽度超过TextView的宽度2.android:ellipsize="marquee"(实现跑马灯效果)3.只有在TextView获取到焦点时,才会滚动.所以加上android:focusableInTouchMode="true"  android:focusable="true",最容易忽略的是此条. 4.滚动重复次数设置:android:marque

利用js的for循环实现一个简单的“九九乘法表”

For循环九九乘法表 for循环是javascript中一种常用的循环语句,可以很好的解决在程序中需要重复执行某些语句,利用for循环实现简单的“九九乘法表”的效果: 让循环从小到大,依次排序,并计算每次的结果,并用 table 使之排列出来. <script type="text/javascript"> document.write('<table border="1">'); //以表格规格打印 for(var i=1;i<=9;