/**
* Copyright iong ( http://wonderfl.net/user/iong )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/tkEk
*/
/*
※ 虫嫌い注意
click center button
*/
package{
import flash.display.Sprite;
[SWF(width="465", height="465", backgroundColor="#ffffff", frameRate="30")]
public class BugBug extends Sprite
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.BlendMode;
private var cv:BitmapData;
private var cvR:Sprite = new Sprite();
private var btn:Sprite = new Sprite();
private var objBug:Object = new Object();
private var aryP:Array = new Array();
public var sS:setBug = new setBug();
private var bugCnt:uint = 0;
import flash.display.StageAlign;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
// size
public var intS:Number;
// growth speed
public var intGrow:Number;
// speed
public var intSpeed:Number;
// life count
public var intLife:Number;
public function BugBug():void
{
stage.quality = StageQuality.LOW;
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
cvR = new Sprite();
cvR.cacheAsBitmap= true;
cv = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0x000000);
addChild(new Bitmap(cv));
addChild(cvR);
// add button
addChild(btn = atcBtn());
btn.x = stage.stageWidth/2;
btn.y = stage.stageHeight/2;
// act start
addEventListener(Event.ENTER_FRAME, actAll);
}
private function atcBtn():Sprite
{
var retVal:Sprite = new makeBtn();
retVal.addEventListener(MouseEvent.MOUSE_DOWN, clickBtnDown);
retVal.addEventListener(MouseEvent.MOUSE_UP, clickBtnUp);
return retVal;
}
private function clickBtnDown(e:MouseEvent):void
{
e.target.rotation = 180;
e.target.x+=1;
e.target.y+=1;
atcBug();
}
private function clickBtnUp(e:MouseEvent):void
{
e.target.rotation = 0;
e.target.x-=1
e.target.y-=1;
}
private function atcBug():void
{
var tS:Sprite = new makeBug();
tS.name = "bug"+bugCnt;
bugCnt++;
// sprite init
var iX:uint = Math.round(Math.random()*stage.stageWidth);
var iY:uint = Math.round(Math.random()*stage.stageHeight);
aryP.push(sS.init(tS, iX, iY));
cvR.addChild(tS);
}
// main action
private function actAll(e:Event):void
{
for(var i:int=0; i<aryP.length; i++){
var flgLife:Boolean = sS.update(aryP[i], stage.stageWidth, stage.stageHeight);
// dead
if(!flgLife){
aryP[i].target.alpha-=0.1;
if(aryP[i].target.alpha<=0){
cvR.removeChildAt(i);
aryP.splice(i,1);
}
}else{
}
}
cv.draw(cvR, null, null, BlendMode.DIFFERENCE);
}
}
}
import flash.display.Sprite;
import flash.display.Stage;
import flash.geom.Matrix;
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.filters.BlurFilter;
// make bug
class makeBug extends Sprite
{
public function makeBug():void
{
var bg:Sprite = new Sprite();
var eye1:Sprite = new Sprite();
var eye2:Sprite = new Sprite();
var aryGC:Array = [0x000000, 0x000000];
var aryGA:Array = [1, 0];
var aryGR:Array = [0, 0xff];
var matG:Matrix = new Matrix();
matG.createGradientBox(32, 32, 0, 0,0);
with(bg.graphics){
beginGradientFill(GradientType.RADIAL, aryGC, aryGA, aryGR, matG, SpreadMethod.PAD, "rgb", 1);
drawCircle(0, 0, 32);
endFill();
}
bg.scaleY= 0.5;
with(eye1.graphics){
beginFill(0xcc0000);
drawCircle(0, 0, 2);
endFill();
}
with(eye2.graphics){
beginFill(0xcc0000);
drawCircle(0, 0, 2);
endFill();
}
bg.x -= 16;
bg.y -= 6;
eye1.x = 12;
eye2.x = 12;
eye1.y = 3;
eye2.y = -3;
addChild(bg);
addChild(eye1);
addChild(eye2);
}
}
// setting bugs
class setBug
{
public function setBug()
{
}
// mc setting
public function init(_sp:Sprite, tX:Number, tY:Number):Object
{
var tmpS:Number = Math.max(0.4, Math.round(Math.random() * 120)/100);
var retVal:Object= new Object();
retVal = {
intS : tmpS
,intGrow : Math.max(0.1, Math.round(Math.random() * 3)/10)
,intSpeed : Math.round(6 * (120/tmpS))
,intLife : Math.max(200, Math.round(Math.random() * 400))
,intLifeN : 0
,intRot : -90
,intRC : 0
,intRCM : Math.round(Math.random()*2)+1
,intMx : 0
,intMy : 0
,target : _sp
};
_sp.x = tX;
_sp.y = tY;
return retVal;
}
// mc update
public function update(obj:Object, sW:Number, sH:Number):Boolean
{
if(obj.intLife>obj.intLifeN){
var sp:Sprite = obj.target;
if(obj.intRC<=0){
var flgR:uint = Math.round(Math.random()*5);
var intAddR:int= 0;
if(flgR==0) intAddR = 1;
if(flgR==1) intAddR =-1;
obj.intRC= obj.intRCM;
}else obj.intRC--;
obj.intRot += (intAddR * 12);
obj.intMx = Math.cos(obj.intRot * Math.PI / 180) * obj.intSpeed;
obj.intMy = Math.sin(obj.intRot * Math.PI / 180) * obj.intSpeed;
obj.intSpeed = Math.round(12 * (1.2/sp.scaleX));
sp.x += obj.intMx;
sp.y += obj.intMy;
sp.rotation = obj.intRot;
sp.scaleX += obj.intGrow * 0.05;
sp.scaleY += obj.intGrow * 0.05;
// loop stage
if(sp.x < 0) sp.x = sW;
if(sp.y < 0) sp.y = sH;
if(sp.x > sW) sp.x = 0;
if(sp.y > sH) sp.y = 0;
// life count
obj.intLifeN += 1;
return true;
}else{
return false;
}
}
}
// make button
class makeBtn extends Sprite
{
public function makeBtn():void
{
var sB:Sprite = new Sprite();
// btn
with(sB.graphics){
// body
beginFill(0x808080,1);
drawRoundRect(-14,-8, 28,16, 4);
endFill();
// light
lineStyle(1,0xffffff,0.5);
moveTo(-13,-7);
lineTo(13,-7);
lineTo(13,7);
endFill();
// dark
lineStyle(1,0x000000,0.4);
moveTo(-13,-6);
lineTo(-13,7);
lineTo(13,6);
endFill();
}
addChild(sB);
}
}