flash on 2012-9-19
♥0 |
Line 77 |
Modified 2012-09-19 22:52:23 |
MIT License
archived:2017-03-30 22:59:34
ActionScript3 source code
/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/qZVd
*/
package {
import flash.utils.Proxy;
import flash.geom.Point;
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public var canvas:BitmapData;
public var pic:Bitmap;
public function FlashTest() {
canvas = new BitmapData(400,400,false);
pic = new Bitmap(canvas);
addChild(pic);
canvas.fillRect(canvas.rect, 0xFFffFF);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mdown);
stage.addEventListener(MouseEvent.MOUSE_UP, mup);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mmove);
stage.addEventListener(MouseEvent.MOUSE_OUT, mup);
}//ctor
public var pmx:Number = 0;
public var pmy:Number = 0;
public var mx:Number = 0;
public var my:Number =0;
public var dest:Point = new Point();
public var bMdown:Boolean = false;
public function mmove(e:MouseEvent):void
{
pmx = mx;
pmy = my;
mx = this.mouseX;
my = this.mouseY;
if (bMdown)
{
//canvas.setPixel(mx,my, 0);
line(canvas,pmx,pmy,mx,my,0);
}//endif
}//mmove
public function mdown(e:MouseEvent):void
{
bMdown = true;
}//mdown
public function mup(e:MouseEvent):void
{
bMdown = false;
}//mup
//http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
public function line(to:BitmapData, x0:int, y0:int, x1:int, y1:int, c:uint = 0):void
{
var sx:int;
var sy:int;
var dx:int;
var dy:int;
var err:int;
var e2:int;
dx = Math.abs(x0-x1);
dy = Math.abs(y0 - y1);
if (x0 < x1) {sx=1;}else {sx=-1;}
if (y0 < y1) {sy=1;}else {sy =-1;}
err = dx-dy;
while(true)
{
to.setPixel(x0,y0,c);
if (x0 == x1 && y0 == y1) { return;}
e2 = err+err; //2*err
if (e2 > -dy)
{
err -= dy;
x0 += sx;
}//endif
if (e2 < dx)
{
err += dx;
y0 += sy;
}//endif
}//wend
}//line
}//classend
}