お絵描きアプリもどき
// write as3 code here..
package {
import flash.display.*;
import flash.events.*;
import flash.ui.Keyboard;
public class DrawApp extends Sprite {
private const COLORS:Array = [ 0x000000, 0xcc0000, 0xcccc00, 0x00cc00, 0x00cccc, 0x0000cc, 0xcc00cc ];
private const THICKNESS_MIN:int = 1;
private const THICKNESS_MAX:int = 10;
private var canvas_bd:BitmapData;
private var canvas_sh:Shape;
private var pen_sh:Shape;
private var index:int;
private var color:int;
private var thickness:int;
public function DrawApp() {
addEventListener( Event.ADDED_TO_STAGE, added );
}
private function added( e:Event ):void {
if ( e.target == this ) {
removeEventListener( e.type, arguments.callee );
setup();
}
}
private function setup():void {
canvas_bd = new BitmapData( stage.stageWidth, stage.stageHeight, false, 0xffffff );
addChild( new Bitmap( canvas_bd ) );
canvas_sh = new Shape();
addChild( canvas_sh );
pen_sh = new Shape();
pen_sh.x = 5;
pen_sh.y = 5;
addChild( pen_sh );
index = 0;
color = COLORS[ index ];
thickness = 5;
refreshPen();
stage.addEventListener( MouseEvent.MOUSE_DOWN, startDraw );
stage.addEventListener( KeyboardEvent.KEY_UP, keyUpHandler );
}
private function refreshPen():void {
var g:Graphics = pen_sh.graphics;
g.clear();
g.lineStyle( 0, 0x000000 );
g.beginFill( 0xffffff, 0.9 );
g.drawRect( 0, 0, 16, 16 );
g.endFill();
g.lineStyle( thickness, color );
g.moveTo( 8.0, 8 );
g.lineTo( 8.2, 8 );
}
private function keyUpHandler( e:KeyboardEvent ):void {
switch ( e.keyCode ) {
case Keyboard.LEFT:
index = ( COLORS.length + index - 1 ) % COLORS.length;
color = COLORS[ index ];
break;
case Keyboard.RIGHT:
index = ( index + 1 ) % COLORS.length;
color = COLORS[ index ];
break;
case Keyboard.UP:
thickness = Math.min( thickness + 1, THICKNESS_MAX );
break;
case Keyboard.DOWN:
thickness = Math.max( thickness - 1, THICKNESS_MIN );
break;
}
refreshPen();
}
private function startDraw( e:MouseEvent ):void {
var g:Graphics = canvas_sh.graphics;
g.clear();
g.lineStyle( thickness, color, 0.8 );
g.moveTo( e.stageX, e.stageY );
var up:Function = function( e:MouseEvent ):void {
stage.removeEventListener( MouseEvent.MOUSE_MOVE, move );
stage.removeEventListener( MouseEvent.MOUSE_UP, up );
canvas_bd.draw( canvas_sh );
g.clear();
}
var move:Function = function( e:MouseEvent ):void {
g.lineTo( e.stageX, e.stageY );
}
stage.addEventListener( MouseEvent.MOUSE_MOVE, move );
stage.addEventListener( MouseEvent.MOUSE_UP, up );
}
}
}