Re: [實驗] 準時的 Timer
這個主題在EAS3還是AS2 Bible中有探討過
忘記是哪一本...有心的人就去查查看吧~
Tweening可以分為call-based和velocity-based
call-based就是一般很習慣就寫出來的那種tween
<AS3>
addEventListener(Event.ENTER_FRAME, move);
function move(e:Event):void {
mc.x += 10;
}
<AS2>
mc.onEnterFrame = function():Void {
this._x += 10;
}
很直覺,但是也有先前大家提到的缺點
每呼叫一次function就會讓mc往右邊移動10單位
但是如果有一次呼叫跟上次間隔 t 秒
然後下一次又跟這次間隔 1.5t 秒
於是就有第二次移動比第一次慢了一些的感覺
(也就是移動速率不保持固定)
至於velocity-based tweening
使用起來是比較準確,但是相對的就麻煩了一些
顧名思義,這個方法就是要考慮時間間隔與速率大小
如果某次的function呼叫晚了一點點
那麼移動量就會因為時間間隔較大而增加一點點
這樣給人的感覺就是物體的移動速度維持一定
假如我要讓一個mc每秒移動10單位
那麼velocity-based的code應該會長得像這樣
<AS3>
var velocity:Number = 10;
var justNow:Number = getTimer();
addEventListener(Event.ENTER_FRAME, move);
function move(e:Event):void {
var now:Number = getTimer();
mc.x += veloctiy * (now - justNow) / 1000;
justNow = now;
}
<AS2>
var velocity:Number = 10;
var oldTime:Number = getTimer();
mc.onEnterFrame = function():Void {
var now:Number = getTimer();
this._x += velocity * (now - oldTime) / 1000;
justNow = now;
}
我個人建議是
如果你沒有很龜毛,希望tweening非常準確
或者你的project並不需要超級準確的tweening效果
還是用比較簡單的call-based tweening吧
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog http://cjcat.blogspot.com
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.56.252
推
04/29 23:51, , 1F
04/29 23:51, 1F
→
04/29 23:52, , 2F
04/29 23:52, 2F
→
04/29 23:53, , 3F
04/29 23:53, 3F
→
04/29 23:53, , 4F
04/29 23:53, 4F
推
04/29 23:53, , 5F
04/29 23:53, 5F
→
04/29 23:55, , 6F
04/29 23:55, 6F
→
04/29 23:54, , 7F
04/29 23:54, 7F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
4
9
Flash 近期熱門文章
PTT數位生活區 即時熱門文章