2012-01-18 8 views
2

だから私はこのダイナミックなテキストボックスをlogtxtといい、私には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

+0

thor625誰かがあなたを助けるために、より多くの情報を提供する必要があります。うまく動作しないコードを表示してください。どこにいても、あなたの要件やこれまでに取ったステップの詳細を教えてください。詳しく教えてください。 – imp

+0

よく私は自分のスクロールバーを作成する方法を考え出したが、ありがとう。私はawnserを投稿します – thor625

関連する問題