Tween類,flash緩衝效果講解 as3 0

2021-09-02 07:07:57 字數 3917 閱讀 3278

最近做的東西,對於效果程式設計比較多,特別是緩衝,加速度等效果,特意研究了一下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...