イルミネーションぽい物
マウスで線を書いてね
♥0 |
Line 91 |
Modified 2013-12-17 21:17:06 |
MIT License
archived:2017-03-20 05:14:27
ActionScript3 source code
/**
* Copyright misinoe ( http://wonderfl.net/user/misinoe )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/kYOl
*/
package {
/*
*
* マウスで線を書いてね
*
*/
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.display.BlendMode;
import flash.display.Sprite;
import flash.filters.BlurFilter;
import flash.geom.Point;
public class FlashTest extends Sprite {
private var bitmapDatas:Array/* of BitmapData */ = [];
private var bitmaps:Array/* of Bitmap*/ = [];
private var hidePosition:int = 0;
private var timer:Timer;
private var drawIndex:int = 0;
private var drawColor:uint = 0;
private var baseSprite:Sprite;
private var baseBitmapData:BitmapData;
private var debugTextField:TextField;
public function FlashTest() {
// write as3 code here..
trigger();
debugTextField = new TextField();
debugTextField.background = true;
debugTextField.backgroundColor = 0xCCCCCC;
// addChild( debugTextField );
log("test");
}
private function log(...args):void{
debugTextField.text = args.toString() + "\n" + debugTextField.text;
}
private function trigger():void{
this.blendMode = BlendMode.LAYER;
graphics.beginFill( 0 );
graphics.drawRect( 0, 0, stage.stageWidth, stage.stageHeight );
//
var bitmapData:BitmapData;
var bitmap:Bitmap;
for( var i:int=0;i<4;i++ ){
bitmapData = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0 );
bitmap = new Bitmap( bitmapData );
bitmaps.blendMode = BlendMode.ADD;
bitmapDatas.push( bitmapData );
addChild( bitmap );
bitmaps.push( bitmap );
}
//
baseSprite = new Sprite();
baseSprite.filters = [new BlurFilter(5,5)];
baseBitmapData = new BitmapData( 20, 20, true, 0);
//
timer = new Timer( 1000, 0 );
timer.addEventListener( TimerEvent.TIMER, timerHandler );
timer.start();
//
stage.addEventListener( MouseEvent.MOUSE_DOWN, stage_mouseDownHandler );
}
private function baseColor( color:int ):void{
baseSprite.graphics.clear();
baseSprite.graphics.lineStyle( 2, color );
baseSprite.graphics.beginFill( 0xFFFFFF );
baseSprite.graphics.drawCircle( 10, 10, 3 );
baseBitmapData.fillRect( baseBitmapData.rect, 0 );
baseBitmapData.draw( baseSprite );
}
private function timerHandler( ...args ):void{
bitmaps[ hidePosition ].visible = true;
hidePosition ++;
if( hidePosition >= bitmaps.length ) hidePosition = 0;
bitmaps[ hidePosition ].visible = false;
}
private function stage_mouseDownHandler( event:MouseEvent ):void{
timer.stop();
drawIndex = (hidePosition+1)%bitmapDatas.length;
baseColor( 0xFFFFFF*Math.random() );
stage.addEventListener( MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler);
stage.addEventListener( MouseEvent.MOUSE_UP, stage_mouseUpHandler)
log("DOWN");
}
private function stage_mouseMoveHandler( event:MouseEvent ):void{
// bitmapDatas[ drawIndex ].setPixel32( mouseX, mouseY, drawColor );
var destPoint:Point = new Point( mouseX-baseBitmapData.width/2, mouseY-baseBitmapData.height/2 );
bitmapDatas[ drawIndex ].copyPixels( baseBitmapData, baseBitmapData.rect, destPoint, null, null, true );
}
private function stage_mouseUpHandler( event:MouseEvent ):void{
timer.start();
timerHandler();
stage.removeEventListener( MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler);
stage.removeEventListener( MouseEvent.MOUSE_UP, stage_mouseUpHandler)
}
}
}