チェンジセット 1398

差分発生行の前後
無視リスト:
コミット日時:
2008/09/26 06:54:14 (4 ヶ月前)
コミッタ:
Mk-10
ログメッセージ:

サンプルを作成&ちょっと修正。やっぱ VIew の Interface は邪魔かも

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/AbstractUI/trunk/samples/ScrollbarSample.as

    r976 r1398  
    11package   
    22{ 
    3         import flash.display.Sprite; 
    4          
    53        import org.libspark.abstractUI.AbstractUI; 
     4        import org.libspark.abstractUI.events.ScrollbarEvent; 
    65        import org.libspark.abstractUI.scrollbar.IScrollbar; 
    76        import org.libspark.abstractUI.scrollbar.impl.SimpleScrollbar; 
    8         import org.libspark.abstractUI.scrollbar.impl.SimpleScrollbarView;               
     7        import org.libspark.abstractUI.scrollbar.impl.SimpleScrollbarView; 
     8         
     9        import flash.display.GradientType; 
     10        import flash.display.Sprite; 
     11        import flash.geom.Matrix;        
    912        /** 
    1013         * @author Mk-10:cellfusion 
     
    1316        { 
    1417                public var scrollbar:Sprite; 
    15                  
     18                private var _mask:Sprite; 
     19                private var _sp:Sprite; 
     20                private var _sb:IScrollbar; 
     21 
    1622                public function ScrollbarSample() 
    1723                { 
    1824                        AbstractUI.initialize(stage); 
    1925                         
    20                         var sb:IScrollbar = new SimpleScrollbar(new SimpleScrollbarView(scrollbar)); 
     26                        _sb = new SimpleScrollbar(new SimpleScrollbarView(scrollbar)); 
     27                         
     28                        _mask = new Sprite(); 
     29                        _mask.graphics.beginFill(0x000000, 100); 
     30                        _mask.graphics.drawRect(0, 0, 200, 100); 
     31                        _mask.graphics.endFill(); 
     32                         
     33                        addChild(_mask); 
     34                         
     35                        var mat:Matrix = new Matrix(); 
     36                        mat.createGradientBox(500, 200); 
     37                        mat.rotate(Math.PI/2); 
     38                         
     39                        _sp = new Sprite(); 
     40                        _sp.graphics.beginGradientFill(GradientType.LINEAR, [0xFFFFFF, 0x000000], [1, 1], [0x00, 0xFF], mat); 
     41                        _sp.graphics.drawRect(0, 0, 200, 500); 
     42                        _sp.graphics.endFill(); 
     43                        _sp.mask = _mask; 
     44                         
     45                        addChild(_sp); 
     46                         
     47                        // マスクと表示オブジェクトの比率を渡す 
     48                        _sb.pageSize = _mask.height / _sp.height; 
     49                        _sb.addEventListener(ScrollbarEvent.SCROLL_CHANGED, scrollChangeHandler); 
     50                } 
     51                 
     52                private function scrollChangeHandler(event:ScrollbarEvent):void 
     53                { 
     54                        var p:Number = (_sb.scrollPos - _sb.minScrollPos) / (_sb.maxScrollPos - _sb.minScrollPos); 
     55                        _sp.y = (_mask.height - _sp.height) * p; 
    2156                } 
    2257        } 
  • as3/AbstractUI/trunk/src/org/libspark/abstractUI/scrollbar/impl/SimpleScrollbar.as

    r976 r1398  
    2727package org.libspark.abstractUI.scrollbar.impl  
    2828{ 
    29         import flash.display.Sprite; 
    30         import flash.events.EventDispatcher; 
    31         import flash.events.MouseEvent; 
    32         import flash.geom.Rectangle; 
    33          
    3429        import org.libspark.abstractUI.AbstractUI; 
    3530        import org.libspark.abstractUI.events.ScrollbarEvent; 
     
    3833        import org.libspark.abstractUI.scrollbar.IScrollbar; 
    3934        import org.libspark.abstractUI.scrollbar.IScrollbarView; 
    40         import org.libspark.abstractUI.scrollbar.impl.SimpleScrollTween;         
     35        import org.libspark.abstractUI.scrollbar.impl.SimpleScrollTween; 
     36         
     37        import flash.display.Sprite; 
     38        import flash.events.Event; 
     39        import flash.events.EventDispatcher; 
     40        import flash.events.MouseEvent; 
     41        import flash.geom.Rectangle;     
    4142        /** 
    4243         * @author Mk-10:cellfusion 
     
    5354                private var _scrollTween:IScrollTween; 
    5455 
    55                 public function get scrollPos():Number  
    56                 {  
    57                         return _scrollPos;  
    58                 } 
    59  
     56                public function get scrollPos():Number { return _scrollPos; } 
    6057                public function set scrollPos(value:Number):void 
    6158                { 
    6259                        _scrollPos = value; 
    63                          
    6460                        dispatchEvent(new ScrollbarEvent(ScrollbarEvent.SCROLL_CHANGED)); 
    6561                         
     
    6864                } 
    6965                 
    70                 public function get maxScrollPos():Number  
    71                 {  
    72                         return _maxScrollPos;  
    73                 } 
    74  
     66                public function get scrollPercent():Number { return (scrollPos - minScrollPos) / (maxScrollPos - minScrollPos) } 
     67                 
     68                public function get maxScrollPos():Number { return _maxScrollPos; } 
    7569                public function set maxScrollPos(value:Number):void 
    7670                { 
     
    7872                } 
    7973                 
    80                 public function get minScrollPos():Number  
    81                 {  
    82                         return _minScrollPos;  
    83                 } 
    84  
     74                public function get minScrollPos():Number { return _minScrollPos; } 
    8575                public function set minScrollPos(value:Number):void 
    8676                { 
     
    8878                } 
    8979 
    90                 public function get scrollSize():Number  
    91                 {  
    92                         return _scrollSize;  
    93                 } 
    94  
     80                public function get scrollSize():Number { return _scrollSize; } 
    9581                public function set scrollSize(value:Number):void 
    9682                { 
     
    9884                } 
    9985 
    100                 public function get pageSize():Number  
    101                 {  
    102                         return _pageSize;  
    103                 } 
    104  
     86                public function get pageSize():Number { return _pageSize; } 
    10587                public function set pageSize(value:Number):void 
    10688                { 
    10789                        _pageSize = value; 
    10890                         
     91                        _view.thumb.y = _view.track.y; 
     92                        _scrollPos = minScrollPos; 
     93                         
    10994                        // ページのサイズに合わせて Thumb のサイズを変更する 
    110                 } 
    111  
    112                 public function get scrollTween():IScrollTween  
    113                 {  
    114                         return _scrollTween; 
    115                 } 
    116  
     95                        _view.thumb.height = _view.track.height * value; 
     96                         
     97                        _maxScrollPos = _view.track.y + _view.track.height - _view.thumb.height; 
     98                } 
     99 
     100                public function get scrollTween():IScrollTween { return _scrollTween; } 
    117101                public function get scrollRepeat():IScrollRepeat  
    118102                {  
     
    134118                        _view.thumb.addEventListener(MouseEvent.MOUSE_DOWN, dragStartHandler); 
    135119                         
    136                         _view.upButton.addEventListener(MouseEvent.CLICK, scrollUpHandler); 
    137                         _view.upButton.addEventListener(MouseEvent.MOUSE_DOWN, upButtonMouseDownHandler); 
    138                          
    139                         _view.downButton.addEventListener(MouseEvent.CLICK, scrollDownHandler); 
    140                         _view.downButton.addEventListener(MouseEvent.MOUSE_DOWN, downButtonMouseDownHandler); 
    141                          
    142120                        _view.track.addEventListener(MouseEvent.MOUSE_DOWN, scrollHandler); 
     121                         
     122                        if (_view.upButton) { 
     123                                _view.upButton.addEventListener(MouseEvent.CLICK, scrollUpHandler); 
     124                                _view.upButton.addEventListener(MouseEvent.MOUSE_DOWN, upButtonMouseDownHandler); 
     125                        } 
     126                         
     127                        if (_view.downButton) { 
     128                                _view.downButton.addEventListener(MouseEvent.CLICK, scrollDownHandler); 
     129                                _view.downButton.addEventListener(MouseEvent.MOUSE_DOWN, downButtonMouseDownHandler); 
     130                        } 
    143131                } 
    144132                 
     
    155143                        _view.thumb.startDrag(false, bounds); 
    156144                        AbstractUI._stage.addEventListener(MouseEvent.MOUSE_UP, dragEndHandler); 
     145                        AbstractUI._stage.addEventListener(Event.ENTER_FRAME, dragProgressHandler); 
     146                } 
     147                 
     148                private function dragProgressHandler(event:Event):void 
     149                { 
     150                        scrollPos = _view.thumb.y; 
    157151                } 
    158152                 
    159153                private function dragEndHandler(event:MouseEvent):void 
    160154                { 
     155                        scrollPos = _view.thumb.y; 
     156                         
    161157                        Sprite(_view.thumb).stopDrag(); 
    162158                        AbstractUI._stage.removeEventListener(MouseEvent.MOUSE_UP, dragEndHandler); 
     159                        AbstractUI._stage.removeEventListener(Event.ENTER_FRAME, dragProgressHandler); 
    163160                } 
    164161