Flash AS3: как заставить полосу прокрутки реагировать на динамическое перемещение текстового поля? - PullRequest
0 голосов
/ 07 июня 2010

Я долго искал учебник и отвечал на него, но не могу найти то, что ищу.Я загружаю HTML-текст в динамическое текстовое поле, и у меня есть полоса прокрутки, управляющая прокруткой с использованием кода ниже.Что я хочу сделать, так это добавить кнопки прокрутки вверх / вниз и переместить полосу прокрутки относительно текстовой прокрутки.Я просто собирался использовать «tracklistingtext.scrollV -» для кнопок прокрутки, но сейчас полоса прокрутки не распознает движение текста.Что мне нужно сделать, чтобы полоса прокрутки прослушивала позицию прокрутки текста?

var listTextreq:URLRequest=new URLRequest("tracklist.txt");
var listTextLoader:URLLoader = new URLLoader();
var bounds:Rectangle=new Rectangle(scrollMC.x,scrollMC.y,0,300);
var scrolling:Boolean=false;

function fileLoaded(event:Event):void {
 tracklistingtext.htmlText=listTextLoader.data;
 tracklistingtext.multiline=true;
 tracklistingtext.wordWrap=true;
 scrollMC.addEventListener(MouseEvent.MOUSE_DOWN, startScroll);
 stage.addEventListener(MouseEvent.MOUSE_UP, stopScroll);
 addEventListener (Event.ENTER_FRAME, enterHandler);

}

listTextLoader.addEventListener(Event.COMPLETE, fileLoaded);
listTextLoader.load(listTextreq);

function startScroll(e:Event):void {
 scrolling=true;
 scrollMC.startDrag(false,bounds);
}

function stopScroll(e:Event):void {
 scrolling=false;
 scrollMC.stopDrag();
}

function enterHandler (e:Event):void {
 if (scrolling == true) {
  tracklistingtext.scrollV = Math.round(((scrollMC.y - bounds.y)/300)*tracklistingtext.maxScrollV);
 }
}

Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 07 июня 2010

Замените вычисления scrollHandler вашими.

//...

function fileLoaded(event:Event):void {
    tracklistingtext.htmlText=listTextLoader.data;
    tracklistingtext.multiline=true;
    tracklistingtext.wordWrap=true;
    scrollMC.addEventListener(MouseEvent.MOUSE_DOWN, startScroll);
    stage.addEventListener(MouseEvent.MOUSE_UP, stopScroll);
    addEventListener (Event.ENTER_FRAME, enterHandler);
    /* !!! */ tracklistingtext.addEventListener(Event.SCROLL, scrollHandler);
}

//...

function scrollHandler(event:Event):void {
    scrollMC.y = (tracklistingtext.scrollV / tracklistingtext.maxScrollV) * bounds.height + bounds.y;
}
...