2010-01-12 78 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