チェンジセット 1398
- コミット日時:
- 2008/09/26 06:54:14 (4 ヶ月前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/AbstractUI/trunk/samples/ScrollbarSample.as
r976 r1398 1 1 package 2 2 { 3 import flash.display.Sprite;4 5 3 import org.libspark.abstractUI.AbstractUI; 4 import org.libspark.abstractUI.events.ScrollbarEvent; 6 5 import org.libspark.abstractUI.scrollbar.IScrollbar; 7 6 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; 9 12 /** 10 13 * @author Mk-10:cellfusion … … 13 16 { 14 17 public var scrollbar:Sprite; 15 18 private var _mask:Sprite; 19 private var _sp:Sprite; 20 private var _sb:IScrollbar; 21 16 22 public function ScrollbarSample() 17 23 { 18 24 AbstractUI.initialize(stage); 19 25 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; 21 56 } 22 57 } as3/AbstractUI/trunk/src/org/libspark/abstractUI/scrollbar/impl/SimpleScrollbar.as
r976 r1398 27 27 package org.libspark.abstractUI.scrollbar.impl 28 28 { 29 import flash.display.Sprite;30 import flash.events.EventDispatcher;31 import flash.events.MouseEvent;32 import flash.geom.Rectangle;33 34 29 import org.libspark.abstractUI.AbstractUI; 35 30 import org.libspark.abstractUI.events.ScrollbarEvent; … … 38 33 import org.libspark.abstractUI.scrollbar.IScrollbar; 39 34 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; 41 42 /** 42 43 * @author Mk-10:cellfusion … … 53 54 private var _scrollTween:IScrollTween; 54 55 55 public function get scrollPos():Number 56 { 57 return _scrollPos; 58 } 59 56 public function get scrollPos():Number { return _scrollPos; } 60 57 public function set scrollPos(value:Number):void 61 58 { 62 59 _scrollPos = value; 63 64 60 dispatchEvent(new ScrollbarEvent(ScrollbarEvent.SCROLL_CHANGED)); 65 61 … … 68 64 } 69 65 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; } 75 69 public function set maxScrollPos(value:Number):void 76 70 { … … 78 72 } 79 73 80 public function get minScrollPos():Number 81 { 82 return _minScrollPos; 83 } 84 74 public function get minScrollPos():Number { return _minScrollPos; } 85 75 public function set minScrollPos(value:Number):void 86 76 { … … 88 78 } 89 79 90 public function get scrollSize():Number 91 { 92 return _scrollSize; 93 } 94 80 public function get scrollSize():Number { return _scrollSize; } 95 81 public function set scrollSize(value:Number):void 96 82 { … … 98 84 } 99 85 100 public function get pageSize():Number 101 { 102 return _pageSize; 103 } 104 86 public function get pageSize():Number { return _pageSize; } 105 87 public function set pageSize(value:Number):void 106 88 { 107 89 _pageSize = value; 108 90 91 _view.thumb.y = _view.track.y; 92 _scrollPos = minScrollPos; 93 109 94 // ページのサイズに合わせて 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; } 117 101 public function get scrollRepeat():IScrollRepeat 118 102 { … … 134 118 _view.thumb.addEventListener(MouseEvent.MOUSE_DOWN, dragStartHandler); 135 119 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 142 120 _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 } 143 131 } 144 132 … … 155 143 _view.thumb.startDrag(false, bounds); 156 144 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; 157 151 } 158 152 159 153 private function dragEndHandler(event:MouseEvent):void 160 154 { 155 scrollPos = _view.thumb.y; 156 161 157 Sprite(_view.thumb).stopDrag(); 162 158 AbstractUI._stage.removeEventListener(MouseEvent.MOUSE_UP, dragEndHandler); 159 AbstractUI._stage.removeEventListener(Event.ENTER_FRAME, dragProgressHandler); 163 160 } 164 161
