2012-01-18 47 views
2

好吧,所以我有這個名爲logtxt的dyanamic文本框,我有一個UIScrollbar附加到它。它的工作原理,但只有當我通過鍵入/粘貼到文本框添加它。當我通過代碼添加文本時,我需要它來工作。 (它通過組件檢查器正確鏈接)UIScrollbar組件不工作在閃光燈cs4

回答

0

我製作了影片剪輯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); 

如果您想對現有文本框進行此操作,請將此代碼置於位於上下文中的位置。

logtxt.text = "default custom text" 
+0

它仍然無法正常工作 – thor625 2012-01-19 00:08:30

+0

thor625你需要提供更多信息給任何人來幫助你。向我們展示不起作用的代碼以及您擁有它的代碼,請告訴我們有關您的要求以及迄今採取的步驟的更多細節,請詳細說明。 – imp 2012-01-19 12:55:14

+0

好吧,我想出瞭如何創建自己的滾動條,但謝謝。我將發佈awnser – thor625 2012-01-19 17:19:04