チェンジセット 3948
- コミット日時:
- 2010/06/03 01:37:47 (3 年前)
- ファイル:
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
as3/gunyarapaint/branches/gunyarapaint/compat/src/org/libspark/gunyarapaint/ui/v1/Canvas.as
r3822 r3948 3 3 import com.oysteinwika.ui.SWFMouseWheel; 4 4 5 import flash.display.Sprite;6 import flash.events.Event;7 import flash.events.IEventDispatcher;8 5 import flash.events.MouseEvent; 9 6 import flash.geom.Rectangle; … … 19 16 import org.libspark.gunyarapaint.framework.LayerBitmapCollection; 20 17 import org.libspark.gunyarapaint.framework.TransparentBitmap; 21 import org.libspark.gunyarapaint.framework.modules.CanvasModule;22 18 import org.libspark.gunyarapaint.framework.modules.DropperModule; 23 19 import org.libspark.gunyarapaint.framework.modules.ICanvasModule; … … 27 23 internal class Canvas extends UIComponent 28 24 { 29 public function Canvas(app:IApplication )25 public function Canvas(app:IApplication, parent:CanvasController) 30 26 { 31 27 var rect:Rectangle = new Rectangle(0, 0, app.canvasWidth, app.canvasHeight); … … 45 41 addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 46 42 addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove2); 43 parent.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 47 44 // Capabilities.version で OS を判断するのは適切ではないが、 48 45 // 少なくとも MacOSX ではマウスホイールを正しく感知することが出来無いので対処療法として … … 158 155 private function onMouseDown(event:MouseEvent):void 159 156 { 157 var x:Number = 0; 158 var y:Number = 0; 159 // Canvasは CanvasControllerに対する子供にあたるので、 160 // 親(CanvasController)への伝播を停止する 161 if (event.currentTarget == this) { 162 x = event.localX; 163 y = event.localY; 164 event.stopPropagation(); 165 } 166 else { 167 // Shiftキーを押していた場合CanvasControllerが 168 // 担当する処理なので、スキップするようにする 169 if (event.shiftKey) 170 return; 171 x = mouseX; 172 y = mouseY; 173 } 160 174 var app:gunyarapaint = gunyarapaint(Application.application); 161 175 var layers:LayerBitmapCollection = app.layers; 162 176 try { 163 177 var canvasModule:ICanvasModule = app.canvasModule; 164 var x:Number = event.localX; 165 var y:Number = event.localY; 166 if (m_rect.contains(x, y)) { 167 // 例えば非表示あるいはロック状態のあるレイヤーに対して描写を行うと例外が送出されるので、 168 // 必ず try/catch で囲む必要がある 169 canvasModule.start(x, y); 170 layers.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 171 layers.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 172 layers.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); 173 } 178 // 例えば非表示あるいはロック状態のあるレイヤーに対して描写を行うと例外が送出されるので、 179 // 必ず try/catch で囲む必要がある 180 canvasModule.start(x, y); 181 layers.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 182 layers.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 183 layers.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); 174 184 } catch (e:Error) { 175 185 removeMouseEvents(layers); as3/gunyarapaint/branches/gunyarapaint/compat/src/org/libspark/gunyarapaint/ui/v1/CanvasController.as
r3913 r3948 67 67 m_canvasScaleX = m_canvasScaleY = 0.5; 68 68 m_canvasScale = 1; 69 m_canvas = new Canvas(app );69 m_canvas = new Canvas(app, this); 70 70 m_canvasContainer.addChild(m_canvas); 71 71 m_contentContainer.addChild(m_canvasContainer); … … 236 236 private function onClickContentContainer(event:MouseEvent):void 237 237 { 238 if (event.eventPhase == EventPhase.AT_TARGET ) {238 if (event.eventPhase == EventPhase.AT_TARGET && event.shiftKey) { 239 239 var pen:Pen = IApplication(Application.application).pen; 240 240 setStyle("backgroundColor", pen.color);

