差分発生行の前後
無視リスト:
コミット日時:
2010/03/22 21:26:45 (3 年前)
コミッタ:
hkrn
ログメッセージ:

added ModuleEvent? to support a mouse wheel, and supported mouse wheel in MovableCanvasModule?

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/branches/gunyarapaint/compat/src/gunyarapaint.mxml

    r3590 r3592  
    3838            import org.libspark.gunyarapaint.framework.modules.LineModule; 
    3939            import org.libspark.gunyarapaint.framework.modules.PixelModule; 
     40            import org.libspark.gunyarapaint.ui.events.CanvasModuleEvent; 
    4041            import org.libspark.gunyarapaint.ui.v1.IController; 
    4142            import org.libspark.gunyarapaint.ui.v1.MovableCanvasModule; 
     
    6869            public function setModule(value:String):void 
    6970            { 
     71                if (hasEventListener(CanvasModuleEvent.BEFORE_CHANGE)) 
     72                    dispatchEvent(new CanvasModuleEvent(CanvasModuleEvent.BEFORE_CHANGE)); 
    7073                m_module = m_context.getModule(value); 
    71                 if (m_module == null) 
     74                if (m_module == null) { 
    7275                    throw new IllegalOperationError(value 
    7376                        + " is not the ICanvasModule implemented module"); 
     77                } 
     78                if (hasEventListener(CanvasModuleEvent.AFTER_CHANGE)) 
     79                    dispatchEvent(new CanvasModuleEvent(CanvasModuleEvent.AFTER_CHANGE)); 
    7480            } 
    7581             
  • as3/gunyarapaint/branches/gunyarapaint/compat/src/org/libspark/gunyarapaint/ui/v1/Canvas.as

    r3589 r3592  
    33    import flash.display.Sprite; 
    44    import flash.events.Event; 
     5    import flash.events.IEventDispatcher; 
    56    import flash.events.MouseEvent; 
    67    import flash.geom.Rectangle; 
     
    1415    import org.libspark.gunyarapaint.framework.TransparentBitmap; 
    1516    import org.libspark.gunyarapaint.framework.ui.IApplication; 
     17    import org.libspark.gunyarapaint.ui.events.CanvasModuleEvent; 
    1618     
    1719    internal class Canvas extends UIComponent 
     
    2628            m_auxLine.visible = true; 
    2729            m_auxPixel.visible = false; 
    28              
     30            // 透明画像、キャンバス本体、補助線(直線および斜線)の順番に追加される 
    2931            addChild(transparent); 
    3032            addChild(app.canvasView); 
     
    3335            addEventListener(Event.REMOVED_FROM_STAGE, onRemove); 
    3436            addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
    35              
     37            var dispatcher:IEventDispatcher = IEventDispatcher(app); 
     38            dispatcher.addEventListener(CanvasModuleEvent.BEFORE_CHANGE, onModuleChangeBefore); 
     39            dispatcher.addEventListener(CanvasModuleEvent.AFTER_CHANGE, onModuleChangeAfter); 
    3640            super(); 
    3741        } 
     
    7276            m_auxLine.visible = value ? false : true; 
    7377            m_auxPixel.visible = value ? true : false; 
     78        } 
     79         
     80        private function onModuleChangeBefore(event:CanvasModuleEvent):void 
     81        { 
     82            removeEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel); 
     83        } 
     84         
     85        private function onModuleChangeAfter(event:CanvasModuleEvent):void 
     86        { 
     87            if (IApplication(Application.application).module is MovableCanvasModule) 
     88                addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel); 
    7489        } 
    7590         
     
    118133        } 
    119134         
     135        private function onMouseWheel(event:MouseEvent):void 
     136        { 
     137            var module:MovableCanvasModule = MovableCanvasModule(Application.application.module); 
     138            module.wheel(event.localX, event.localY, event.delta); 
     139        } 
     140         
    120141        private function removeMouseEvents(cv:Sprite):void 
    121142        { 
  • as3/gunyarapaint/branches/gunyarapaint/compat/src/org/libspark/gunyarapaint/ui/v1/MovableCanvasModule.as

    r3578 r3592  
    2525        public function move(x:Number, y:Number):void 
    2626        { 
    27             var scale:Number = m_canvas.scaleX; 
    28             if (scale < 1) 
    29                 scale = 1.0 / (-scale + 2); 
    30             var x:Number = m_scrollPosition.x + (coordinateX - x) * scale; 
    31             var y:Number = m_scrollPosition.y + (coordinateY - y) * scale; 
    32             m_canvas.scroll(x, y); 
     27            moveCanvas(x, y); 
    3328        } 
    3429         
     
    4035        public function interrupt(x:Number, y:Number):void 
    4136        { 
     37            moveCanvas(x, y); 
     38        } 
     39         
     40        public function wheel(x:Number, y:Number, delta:int):void 
     41        { 
     42            // チルト操作には対応していない。ショートカットキーで対応する? 
     43            var toY:Number = y + delta * m_canvas.canvasScale; 
     44            start(x, y); 
     45            move(x, toY); 
     46            stop(x, toY); 
    4247        } 
    4348         
     
    4752        } 
    4853         
     54        private function moveCanvas(x:Number, y:Number):void 
     55        { 
     56            var scale:Number = m_canvas.scaleX; 
     57            if (scale < 1) 
     58                scale = 1.0 / (-scale + 2); 
     59            var x:Number = m_scrollPosition.x + (coordinateX - x) * scale; 
     60            var y:Number = m_scrollPosition.y + (coordinateY - y) * scale; 
     61            m_canvas.scroll(x, y); 
     62        } 
     63         
    4964        private var m_canvas:CanvasController; 
    5065        private var m_scrollPosition:Point;