TweenLite是第三方出品的专用于各种缓动动画的类库,其性能据说已经超过了Adobe官方的Tween.
从网上找到了一篇中文的说明文档:https://files.cnblogs.com/yjmyzz/tweenLite%e4%b8%ad%e6%96%87%e6%89%8b%e5%86%8c%e4%b8%8e%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e.pdf
这是官方的测试示例:
AS3类库下载: https://files.cnblogs.com/yjmyzz/greensock-tweening-platform-v10-as3.zip
用Silverlight的朋友们也不要流口水:因为Silverlight也有相应的tween类库了,详见 http://www.cnblogs.com/nasa/archive/2008/09/11/1288782.html (只不过功能相对Flash而言还有点弱)
下面是一个基本的使用示例:
01 |
import flash.events.MouseEvent; |
05 |
btnStart.addEventListener(MouseEvent.MOUSE_DOWN,btnStartMouseDownHandler); |
06 |
btnStop.addEventListener(MouseEvent.MOUSE_DOWN,btnStopMouseDownHandler); |
08 |
function btnStartMouseDownHandler(e:MouseEvent):void { |
12 |
function btnStopMouseDownHandler(e:MouseEvent):void { |
13 |
TweenLite.killTweensOf(mc); |
16 |
function tweenStart(d:uint=1):void { |
17 |
TweenLite.to(mc, 0.75, {autoAlpha:0.1, scaleX:0.02,scaleY:0.02, ease:Bounce.easeInOut, delay:d, onComplete:tweenEnd}); |
20 |
function tweenEnd():void { |
21 |
TweenLite.to(mc, 0.75, {autoAlpha:1,scaleX:1,scaleY:1,ease:Back.easeInOut, delay:1, onComplete:tweenStart}); |
下面这种图片轮换广告,以前曾经用Silverlight实现过(见:Silverlight之ListBox/Style学习笔记--ListBox版的图片轮换广告),今天用TweenLite也来弄一个:
001 |
import flash.text.TextFieldAutoSize; |
002 |
import flash.display.Bitmap; |
003 |
import flash.display.Sprite; |
004 |
import flash.ui.Mouse; |
005 |
import flash.ui.MouseCursor; |
008 |
import flash.events.MouseEvent; |
017 |
var _container:Sprite; |
024 |
arrBitMap = new Array(imgNums); |
025 |
arrTxtMC = new Array(arrTxtMC); |
030 |
_loader = new Loader(); |
031 |
_rate = new TextField(); |
032 |
_container = new Sprite(); |
036 |
_rate.autoSize = TextFieldAutoSize.CENTER; |
037 |
_rate.textColor = 0x000000; |
038 |
_rate.x = (stage.stageWidth - _rate.width)/2; |
039 |
_rate.y = loadMC.y + 15; |
040 |
this.addChild(_rate); |
041 |
sendRequest(arrImg[_index]); |
043 |
Mouse.cursor = MouseCursor.BUTTON; |
048 |
function sendRequest(p_url:String) { |
049 |
var m_request = new URLRequest(p_url); |
050 |
_loader.load(m_request); |
051 |
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); |
052 |
_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); |
057 |
function onProgress(e:Event) { |
058 |
var m_info:LoaderInfo = e.target as LoaderInfo; |
059 |
var m_percent:uint = (m_info.bytesLoaded/m_info.bytesTotal)*100; |
060 |
_rate.text = m_percent.toString() + " %," + (_index+1) + " / " + imgNums; |
064 |
function onComplete(e:Event) { |
065 |
var _imageData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,true,0xFFFFFFFF); |
066 |
_imageData.draw(_loader, new Matrix(stage.stageWidth/_loader.width, 0, 0, stage.stageHeight/_loader.height, 0, 0)); |
067 |
var m_image:Bitmap = new Bitmap(_imageData); |
068 |
arrBitMap[_index] = m_image; |
069 |
var txtMc:TextMC = new TextMC(); |
070 |
txtMc.txt.text = (_index+1).toString(); |
071 |
arrTxtMC[_index] = txtMc; |
073 |
if (_index > imgNums - 1) { |
074 |
this.removeChild(_rate); |
075 |
this.removeChild(loadMC); |
080 |
sendRequest(arrImg[_index]); |
085 |
function loadContainer():void { |
086 |
for (var i:int=0; i<imgNums; i++) { |
087 |
var img:Bitmap = arrBitMap[i]; |
088 |
_container.addChild(img); |
090 |
img.x = img.width * i; |
094 |
addChild(_container); |
096 |
for (i=imgNums-1; i>=0; i--) { |
097 |
var txt:TextMC = arrTxtMC[i]; |
098 |
txt.y = stage.stageHeight - txt.height + 5; |
099 |
txt.x = stage.stageWidth + 10 - (txt.width+5)*(imgNums-i); |
101 |
txt.addEventListener(MouseEvent.MOUSE_DOWN,MouseDownHandler); |
107 |
_container.addEventListener(MouseEvent.MOUSE_OUT,MouseOutHandler); |
108 |
_container.addEventListener(MouseEvent.ROLL_OVER,RollOverHandler); |
112 |
function tweenStart(d:uint=1):void { |
113 |
TweenLite.to(_container,0.2,{x:-stage.stageWidth*_index,delay:d,onComplete:tweenEnd}); |
117 |
function tweenEnd():void { |
124 |
TweenLite.to(_container,0.2,{x:-stage.stageWidth*_index,delay:1,onComplete:tweenStart}); |
129 |
else if (_index<=0) { |
135 |
function setCurrentTxt():void { |
137 |
for (var i:uint=0; i<imgNums; i++) { |
139 |
arrTxtMC[i].gotoAndStop(2); |
142 |
arrTxtMC[i].gotoAndStop(1); |
147 |
function MouseDownHandler(e:MouseEvent):void { |
148 |
var _temp:int = parseInt((e.currentTarget as TextMC).txt.text,10)-1; |
152 |
if (_temp==imgNums-1){ |
159 |
function MouseOutHandler(e:MouseEvent):void { |
164 |
function RollOverHandler(e:MouseEvent):void { |
165 |
TweenLite.killTweensOf(_container); |
源文件下载:http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Flash/TweenLiteDemo.rar