2010-01-12 75 views
0

我是一個嘗試使用Flash開發我的第一個網站的noob。我做了一些滾動條,但他們不順暢......帶有動作腳本3.0的軟性滾動條

我使用的代碼是:

const scrollUpper:int = -151; 
const scrollLower:int = 366; 
const scrollRange:int = scrollLower - scrollUpper; 
var dragBounds:Rectangle = new Rectangle(scroller_mc.x, scrollUpper, 0, scrollRange); 

var viewableHeight:int = 545; 
var textUpper:int = text_mc.y; 
var textLower:int = textUpper + text_mc.height; 
var textRange:int = text_mc.height - viewableHeight; 

scroller_mc.addEventListener(MouseEvent.MOUSE_DOWN, startScrolling); 
stage.addEventListener(MouseEvent.MOUSE_UP, stopScrolling); 
stage.addEventListener(Event.MOUSE_LEAVE, stopScrolling); 
stage.addEventListener(Event.DEACTIVATE, stopScrolling); 

function scroll(e:Event = null){ 
const pctMoved:Number = 1 - (dragBounds.bottom - scroller_mc.y)/dragBounds.height; 
text_mc.y = textUpper - (pctMoved * textRange); 
} 

function startScrolling(event:MouseEvent):void{ 
addEventListener(Event.ENTER_FRAME, scroll); 
scroller_mc.startDrag(true, dragBounds); 
} 

function stopScrolling(event:Event = null):void{ 
removeEventListener(Event.ENTER_FRAME, scroll); 
scroller_mc.stopDrag(); 
} 

的滾動條的工作,但他們居然這麼順利!提前請原諒一些英文錯誤,好嗎?

感謝

馬庫斯

回答

1

檢查您的幀速率。如果它很低(如12 fps),那麼將其提高到30或60 fps可能會有所幫助。

否則,您可能會查看每個ENTER_FRAME事件上調用的scroll()函數。這是做什麼的?

0

你應該給「event.updateAfterEvent();」在你Scroll事件,這會忽略你的幀率,並更新顯示直後的事件是comeplete

--Andy

+0

我怎麼能這樣做,安迪?你能解釋一下嗎? 在此先感謝! :) – MarcusVR 2010-01-15 17:46:58

+0

在你的函數滾動中,作爲最後一個語句放在那裏,e.updateAfterEvent(); – Andy 2010-01-18 07:11:21