Итак, у меня есть это текстовое поле dyanamic, называемое logtxt, и у меня есть UIScrollbar, прикрепленный к нему. Он работает, но только если я добавлю его, введя/вставив его в текстовое поле. Мне нужно, чтобы он работал, когда я добавляю текст через код. (он правильно связан с инспектором компонентов)Компонент UIScrollbar, не работающий во флэш-памяти cs4
2
A
ответ
0
Я сделал movieclips drag_mc и track_mc и поместил их в видеоклип под названием scroll_mc. Тогда у меня есть класс для создания полосы прокрутки:
package {
import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.*;
import flash.geom.Rectangle;
class MakeScrollBar {
private var host_mc:MovieClip;
private var call_back:Function;
private var drag_mc:MovieClip;
private var track_mc:MovieClip;
private var scroll_rect:Rectangle;
private var upper_limit:Number;
private var range:Number;
public function MakeScrollBar(_mc:MovieClip, cb:Function) {
host_mc = _mc;
call_back = cb;
drag_mc = host_mc.drag_mc; //
drag_mc.buttonMode = true;
drag_mc.mouseChildren = false
drag_mc.addEventListener(MouseEvent.MOUSE_DOWN, press_drag);
track_mc = host_mc.track_mc;
track_mc.buttonMode = true;
track_mc.mouseChildren = false
track_mc.addEventListener(MouseEvent.CLICK, click_track);
set_limits();
}
private function press_drag(event:MouseEvent):void {
drag_mc.stage.addEventListener(MouseEvent.MOUSE_UP, release_drag, false, 0, true);
drag_mc.startDrag(false, scroll_rect);
drag_mc.addEventListener(Event.ENTER_FRAME, drag);
}
private function release_drag(event:MouseEvent):void {
drag_mc.removeEventListener(Event.ENTER_FRAME, drag);
drag_mc.stage.removeEventListener(MouseEvent.MOUSE_UP, release_drag);
drag_mc.stopDrag();
}
private function click_track(event:MouseEvent):void {
trace("Click track");
}
private function set_limits():void {
scroll_rect = new Rectangle(track_mc.x, track_mc.y, 0, track_mc.height - drag_mc.height);
upper_limit = track_mc.y;
range = track_mc.height - drag_mc.height;
}
private function drag(event:Event):void {
var p = (drag_mc.y - track_mc.y)/range;
call_back(p);
}
}
}
и класс документа
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.MouseEvent;
public class ScrollBarAS3 extends Sprite {
public var my_scrollbar:MakeScrollBar;
public function ScrollBarAS3() {
my_scrollbar = new MakeScrollBar(scroll_mc, scroll_text);
}
public function scroll_text(n:Number) {
scroll_txt.scrollV = Math.round((scroll_txt.maxScrollV - 1) * n) + 1;
}
}
}
scroll_txt является текстовое поле
получил его от http://www.webdevils.com/2007/10/13/as3-version-of-scrollbar-class/
0
«Мне нужно, чтобы он работал, когда я добавляю текст через код».
Вы можете сделать это через код без проблем, например, положите это на свою основную шкалу времени;
import fl.controls.TextArea;
var myText:String = "Here is some text, notice how there will a automatigical scroll bar when needed :)";
var textarea_comp:TextArea = new TextArea();
textarea_comp.text = myText;
textarea_comp.height = 60;
addChild (textarea_comp);
Если вы хотите сделать это с существующим текстовым полем, поставить это на этот код в месте, которое находится в контексте, в котором он находится.
она до сих пор не работает – thor625
thor625 вам нужно предоставить гораздо больше информации для тех, кто вам поможет. Покажите нам код, который не работает и где он у вас есть, расскажите нам больше о ваших требованиях и о шагах, которые вы предприняли до сих пор, пожалуйста, уточните. – imp
Хорошо, я понял, как создать свою собственную полосу прокрутки, но спасибо. я выложу awnser – thor625