Changeset 3382
- Timestamp:
- 12/21/07 03:17:06 (13 months ago)
- Location:
- lang/legacy-actionscript/as2draw
- Files:
-
- 5 modified
-
AS2Draw.as (modified) (2 diffs)
-
AS2Draw.swf (modified) (previous)
-
Drawable.as (modified) (8 diffs)
-
MovieClipStack.as (modified) (2 diffs)
-
PixelBuffer.as (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/legacy-actionscript/as2draw/AS2Draw.as
r3324 r3382 20 20 { 21 21 var _this = this; 22 22 /* 23 23 { 24 24 var closure = function(b){_this.pushedPenButton(b);}; … … 38 38 pushedPenButton(p1); 39 39 } 40 40 */ 41 41 tp.appendBlank(8); 42 42 -
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 } -
lang/legacy-actionscript/as2draw/MovieClipStack.as
r3363 r3382 11 11 } 12 12 13 public function size():Number 14 { 15 return mStack.length; 16 } 17 13 18 public function pushNew():MovieClip 14 19 { 15 20 var mc:MovieClip = mParentMC.createEmptyMovieClip("mcstackitem-" + (mNextName++), mParentMC.getNextHighestDepth()); 21 mc.stackData = {log:[]}; 16 22 mStack.push(mc); 17 23 return mc; … … 28 34 return true; 29 35 } 36 37 public function fixBottom(g:MovieClip, renderer):Boolean 38 { 39 if (mStack.length < 1) 40 return false; 41 42 var bottomMC:MovieClip = MovieClip(mStack.shift()); 43 44 var arr = bottomMC.stackData.log; 45 var l:Number = arr.length; 46 47 for (var i:Number = 0;i < l;i++) 48 { 49 var ln = arr[i]; 50 renderer.drawNativeLine(g, ln.x1, ln.y1, ln.x2, ln.y2, ln.color); 51 } 52 53 bottomMC.removeMovieClip(); 54 55 return true; 56 } 30 57 } -
lang/legacy-actionscript/as2draw/PixelBuffer.as
r3363 r3382 31 31 mStride = 1 << i; 32 32 } 33 34 public function setOut(aMC:MovieClip):Void 35 { 36 mOut = aMC; 37 } 33 38 34 39 public function setPixel(x:Number, y:Number, k:Number) 35 40 { 36 41 if (x<0 || x>=mWidth || y<0) return; 37 //mBuf[ (y<<mStrideShift) + x ] = k;42 mBuf[ (y<<mStrideShift) + x ] = k; 38 43 } 39 44
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)