チェンジセット 1120

差分発生行の前後
無視リスト:
コミット日時:
2008/08/27 18:18:10 (5 年前)
コミッタ:
tasuku
ログメッセージ:

r71@poppop (orig r70): tasuku | 2008-06-02 15:50:08 +0900

  • changed mouseout policy
ファイル:

凡例:

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

    r1118 r1120  
    1 private const DEBUG:Boolean = false; 
     1private const DEBUG:Boolean = true; 
    22 
    33import flash.events.Event; 
     
    131131  gpCanvas.rotation = 0; 
    132132 
    133   // マウスボタンが上がったとき、canvasに教えてあげる 
    134   this.addEventListener(MouseEvent.MOUSE_UP, gpCanvas.externalMouseUp);   
    135  
    136133  toolCanvas.x = (this.width - toolCanvas.width) / 2; 
    137134} 
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/controls/GPCanvas.as

    r1117 r1120  
    334334          _pen.mouseOut(evt); 
    335335        } 
    336         public function externalMouseUp(evt:MouseEvent):void { 
    337           _pen.externalMouseUp(evt); 
    338         } 
    339336        public function undo():void { 
    340337          if (undoIndex == undoFirstIndex) { 
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint/entities/GPPen.as

    r1117 r1120  
    99  import gunyarapaint.controls.GPCanvas; 
    1010  import gunyarapaint.controls.PenDetailControl; 
     11   
     12  import mx.core.Application; 
    1113 
    1214  public class GPPen 
     
    145147     
    146148    public function mouseDown(evt:MouseEvent):void { 
     149      // 一応… 
     150      if (!_canvas.isInCanvas(evt)) { 
     151        return; 
     152      } 
    147153          switch (mode) { 
    148154            case PEN_MODE_HAND: 
     
    162168 
    163169    private var isMouseDownAndOut:Boolean = false; 
     170    private var lastX:Number, lastY:Number; 
    164171 
    165172    public function mouseMove(evt:MouseEvent):void { 
     
    168175              case PEN_MODE_HAND: 
    169176          if (_canvas.isInCanvas(evt)) { 
    170             if (isMouseDownAndOut) { 
    171               // マウス押しっぱなしで領域外に出て、また戻ってきた場合 
     177            if (_canvas.isMoveTo) { 
     178              _canvas.lineTo(evt.localX, evt.localY); 
     179            } else { 
     180              // マウス押しっぱなしで領域内にはいってきた場合 
    172181              mouseDown(evt); 
    173               isMouseDownAndOut = false; 
    174             } else { 
    175               _canvas.lineTo(evt.localX, evt.localY); 
    176182            } 
    177183          } else { 
    178184            // TODO: 直線と枠との交点を座標とする。 
     185            return; 
    179186          } 
    180187          break; 
     
    185192          break; 
    186193        } 
    187       }       
     194        lastX = evt.localX; 
     195        lastY = evt.localY; 
     196      } 
    188197    } 
    189198    public function mouseUp(evt:MouseEvent):void { 
     
    200209    public function mouseOut(evt:MouseEvent):void { 
    201210      if (_canvas.isMoveTo) { 
    202         isMouseDownAndOut = true; 
    203       } 
    204     } 
    205     public function externalMouseUp(evt:MouseEvent):void { 
    206           if (isMouseDownAndOut) { 
    207             mouseUp(evt); // evt is passed but no use 
    208             isMouseDownAndOut = false; 
    209           } 
     211        mouseUp(evt); 
     212      } 
    210213    } 
    211214  }