Мягкая прокрутка с ActionScript 3.0 - PullRequest
0 голосов
/ 12 января 2010

Я нуб, пытаюсь разработать свой первый сайт с помощью Flash. Я сделал несколько скроллеров, но они не гладкие ...

Код, который я использовал:

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();
}

Скроллеры работают, но они могут быть очень гладкими! Заранее прошу прощения за английскую ошибку, хорошо?

Спасибо

Marcus

Ответы [ 2 ]

1 голос
/ 12 января 2010

Проверьте частоту кадров. Если он низкий (например, 12 кадров в секунду), то его увеличение до 30 или 60 кадров в секунду может помочь.

В противном случае вы можете посмотреть на функцию scroll (), которая вызывается при каждом событии ENTER_FRAME. Что это делает?

0 голосов
/ 14 января 2010

Вы должны указать "event.updateAfterEvent ();" в вашем событии прокрутки это будет игнорировать вашу частоту кадров и обновлять отображение сразу после того, как событие завершится

- Andy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...