最近做的東西,對於效果程式設計比較多,特別是緩衝,加速度等效果,特意研究了一下tween類,過年沒什麼禮物給大家,寫篇教程分享給大家,算是過年送給大家的新年禮物!
下面是官方寫的fl.transitions.tween類:
可以先嘗試看一下這段**的寫法,用這個方法去看:
從建構函式看起,假設我使用了該類
new tween(mc,"x",regular.easeout,0,200,4);
結合adobe的幫助文件,當初始化例項的時候,便對物件mc的x進行regular.easeout操作,具體是從0值到200值,歷時4幀
然後問乙個為什麼,他為什麼會對物件mc的x進行regular.easeout操作,具體是從0值到200值,歷時4幀?
帶著這個問題,現在開始看這個類吧!從建構函式看
package fl.transitions
public var begin:number = nan;
public var change:number = nan;
public var useseconds:boolean = false;
public var prevtime:number = nan;
public var prevpos:number = nan;
public var looping:boolean = false;
private var _duration:number = nan;
private var _time:number = nan;
private var _fps:number = nan;
private var _position:number = nan;
private var _starttime:number = nan;
private var _intervalid:uint = 0;
private var _finish:number = nan;
private var _timer:timer = null;
public function get time():number
public function set time(t:number):void
else
this.stop();
this.dispatchevent(new tweenevent(tweenevent.motion_finish, this._time, this._position)); }
} else if (t < 0) else }
public function get duration():number
public function set duration(d:number):void
public function get fps():number
public function set fps(fps:number):void
} public function get position():number
public function set position(p:number):void
public function getposition(t:number=nan):number
public function setposition(p:number):void
public function get finish():number
public function set finish(value:number):void
function tween(obj:object, prop:string, func:function, begin:number, finish:number, duration:number, useseconds:boolean=false)
public function continueto(finish:number, duration:number):void
public function yoyo():void
protected function startenterframe():void
else
this.isplaying = true; }
protected function stopenterframe():void
else
this.isplaying = false; }
public function start():void
public function stop():void
public function resume():void
public function rewind(t:number=0):void
public function fforward():void
public function nextframe():void
protected function onenterframe(event:event):void
protected function timerhandler(timerevent:timerevent):void
public function prevframe():void
private function fixtime():void
private function update():void
} }
不知大家看的如何,反正我現在來告訴你結果,你會發現,實際這個類很簡單,他就做了一件事,就是每個時間變化每個不同的狀態,而具體怎麼變的,誰看到了?比如加速度,彈簧效果等都應該有演算法,但是這裡面並沒有看到演算法啊,只看到他每次更改時間time不管如何,總會update()一下,演算法就在這,它會呼叫getposition方法,而該方法返回的值是this.func (t, this.begin, this.change, this._duration)(插播引數講解,func的4個引數分別是,當前運動到的time值,初始值即建構函式中第4個引數,要改變的值即結束值減初始值,總時間即建構函式中第6個引數)func方法得到的就是變化一下time之後的物體值,而這個func就是建構函式中第三個引數 regular.easeout,這個引數是fl.transitions.easing包中的某個類的某個方法,如果使用方法,返回的值就是 return -c * (t /= d) * (t - 2) + b;這個就是緩衝演算法,fl.transitions.easing包中還有很多不同移動效果的演算法,比如彈簧,加速度等。竟然看到這裡,大家都知道了 tween只不過是呼叫這些演算法的乙個東西罷了,那麼我們根據自我需求寫一些簡單的緩衝類,然後呼叫adobe的這些精髓演算法呢?
先看看官方的演算法源**
adobe官方fl.transitions.easing.regular類,源**:
package fl.transitions.easing
public static function easeout(t:number, b:number,
c:number, d:number):number
public static function easeinout(t:number, b:number,
c:number, d:number):number
} }
接下來看看,我為了某個專案,趕時間寫出來針對顯示物件乙個非常簡單的緩衝類,然後呼叫了官方的fl.transitions.easing包中的演算法
package index.item.pairbumping
public function play()
//順走所執行事件
private function fun1(e:event) }
public function back()
private function fun2(e:event) }
public function stop() }
}摘自:
Tween類,flash緩衝效果講解 as3 0
最近做的東西,對於效果程式設計比較多,特別是緩衝,加速度等效果,特意研究了一下tween類,過年沒什麼禮物給大家,寫篇教程分享給大家,算是過年送給大家的新年禮物!下面是官方寫的fl.transitions.tween類 可以先嘗試看一下這段 的寫法,用這個方法去看 從建構函式看起,假設我使用了該類 ...
Tween類 的緩動效果
tips 匯入類,右鍵物件連線設定 匯入tween類 import mx.transitions.tween 匯入easing類 import mx.transitions.easing.this.attachmovie mc mc this.getnexthighestdepth var mybo...
flash鏡面效果
將乙個正向的圖形製作成可以水平 豎直,任意翻轉的效果。支援動態字型,只支援固定大小設定。不能檢測mc的當前大小,因為遮罩外的面積以及字型框的面積都會增加出來白框。附件 spximage1.jpg 如下 import flash.display.bitmapdata import flash.geom...