Changeset 3382 for lang/legacy-actionscript/as2draw/Drawable.as
- Timestamp:
- 12/21/07 03:17:06 (13 months ago)
- Files:
-
- 1 modified
-
lang/legacy-actionscript/as2draw/Drawable.as (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/legacy-actionscript/as2draw/Drawable.as
r3364 r3382 1 1 class Drawable 2 2 { 3 public static var UNDO_LIMIT = 3; 4 3 5 private var mBGColor:Number; 4 6 private var mMC:MovieClip; … … 14 16 { 15 17 mCurrentPen = new Pen(); 16 mDragData = {dragging: false, prevX: 0, prevY: 0 };18 mDragData = {dragging: false, prevX: 0, prevY: 0, count: 0, startX: 0, startY: 0, startLayer: null}; 17 19 mMC = aContainer.createEmptyMovieClip("drawable_mc", 1); 18 20 mMC._quality = "LOW"; … … 47 49 { 48 50 mDragData.dragging = true; 49 mDragData.prevX = mMC._xmouse; 50 mDragData.prevY = mMC._ymouse; 51 mDragData.count = 0; 52 mDragData.prevX = Math.floor(mMC._xmouse); 53 mDragData.prevY = Math.floor(mMC._ymouse); 51 54 52 renderLine(mMC._xmouse, mMC._ymouse, mMC._xmouse, mMC._ymouse); 55 mDragData.startX = mDragData.prevX; 56 mDragData.startY = mDragData.prevY; 57 58 renderLine(mDragData.prevX, mDragData.prevY, mDragData.prevX, mDragData.prevY); 59 mDragData.startLayer = mCurrentDrawingMC; 60 53 61 } 54 62 … … 56 64 { 57 65 mDragData.dragging = false; 66 /*if (mDragData.count > 0) 67 smooth(mMC._xmouse, mMC._ymouse);*/ 58 68 commit(); 59 69 } … … 70 80 private function renderLine(x1:Number, y1:Number, x2:Number, y2:Number) 71 81 { 82 var color:Number = mCurrentPen.color; 72 83 var g:MovieClip; 73 84 … … 89 100 dy = ofs[(i<<1)+1]; 90 101 } 102 /* 103 mPixBuf.setOut(g); 104 */ 91 105 mPixBuf.drawLine( 92 106 x1 +dx, y1 +dy, 93 x2 +dx, y2 +dy, 0, mCurrentPen.color); 94 95 g.lineStyle(0, mCurrentPen.color); 96 g.moveTo(x1+dx, y1+dy); 97 g.lineTo(x2+dx, y2+dy); 98 g.lineTo(x2+dx, y2+dy+1); 107 x2 +dx, y2 +dy, 0, color); 108 109 g.stackData.log.push(new LineData(x1+dx, y1+dy, x2+dx, y2+dy, color)); 110 drawNativeLine(g, x1+dx, y1+dy, x2+dx, y2+dy, color); 99 111 } 112 } 113 114 public function drawNativeLine(g:MovieClip, x1:Number, y1:Number, x2:Number, y2:Number, color:Number) 115 { 116 var DX:Number = Math.abs(x2 - x1); 117 var DY:Number = Math.abs(y2 - y1); 118 119 g.lineStyle(0, color); 120 g.moveTo(x1, y1); 121 g.lineTo(x2, y2); 122 123 if (!(DX > DY && x1 < x2 && y1 < y2)) 124 g.lineTo(x2+1, y2); 100 125 } 101 126 … … 104 129 if (mDragData.dragging) 105 130 { 106 renderLine(mDragData.prevX, mDragData.prevY, mMC._xmouse, mMC._ymouse); 131 /*if (++mDragData.count == 5) 132 { 133 smooth(mMC._xmouse, mMC._ymouse); 134 mDragData.count = 0; 135 } 136 else*/ 137 { 138 var x:Number = Math.floor(mMC._xmouse); 139 var y:Number = Math.floor(mMC._ymouse); 140 renderLine(mDragData.prevX, mDragData.prevY, x, y); 107 141 108 mDragData.prevX = mMC._xmouse; 109 mDragData.prevY = mMC._ymouse; 142 mDragData.prevX = x; 143 mDragData.prevY = y; 144 } 110 145 } 146 } 147 148 public function smooth(x:Number, y:Number) 149 { 150 x = Math.floor(x); 151 y = Math.floor(y); 152 153 if (mDragData.startLayer == mCurrentDrawingMC) 154 mCurrentDrawingMC.clear(); 155 else 156 mMStack.pop(); 157 158 mCurrentDrawingMC = mDragData.startLayer; 159 renderLine(mDragData.startX, mDragData.startY, x, y); 160 mCurrentDrawingMC = null; 161 162 mDragData.startX = x; 163 mDragData.startY = y; 164 mDragData.prevX = x; 165 mDragData.prevY = y; 166 111 167 } 112 168 … … 120 176 private function commit() 121 177 { 178 if (mMStack.size() > UNDO_LIMIT) 179 { 180 mMStack.fixBottom(mMC, this); 181 } 182 122 183 mCurrentDrawingMC = null; 123 184 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)