2010年7月26日 星期一

Fly Mosquito 模擬像蚊子浮動的效果

Fly Mosquito 模擬像蚊子浮動的效果




//主程式


package {

import flash.display.*;
import flash.media.*;
import flash.events.*;

import webco.*;


public class MainTest extends Sprite {

public function MainTest() {

var num=5;
var msq;
var aMS= new Array();
for (var i=0; i<=num; i++) {

msq = new Mosquito();
msq.x=randomNumber(0,stage.stageWidth-50);
msq.y=randomNumber(0,stage.stageHeight-50);
//trace(msq);
addChild(msq);
msq.addEventListener(MouseEvent.CLICK ,onClick);

aMS.push(new MosquitoSimulator(msq));
trace(i);
}

var sound:Sound = new MosquitoSound();
sound.play();

}


function onClick(e:Event) {
var sound:Sound = new MosquitoSound();
sound.play();
}


function randomNumber(low:Number=NaN, high:Number=NaN):Number {
var low:Number=low;
var high:Number=high;

if (isNaN(low)) {
throw new Error("low must be defined");
}
if (isNaN(high)) {
throw new Error("high must be defined");
}

return Math.round(Math.random() * (high - low)) + low;
}

}

}




//模擬程式

package webco{

import flash.display.*;
import flash.events.*;
import flash.geom.Point;
import flash.media.*;


import caurina.transitions.Tweener;

public class MosquitoSimulator {

var initX;
var initY;
var dX=50;
var dY=50;
var simular:*;

public function MosquitoSimulator(obj:Sprite) {

this.simular=obj;

initX=simular.x;
initY=simular.y;

this.simular.addEventListener(MouseEvent.MOUSE_OVER,onOver);
this.simular.addEventListener(MouseEvent.MOUSE_OUT,onOut);

setFloat();

}

function onOver(e:Event) {
   var clickPoint:Point = new Point(simular.mouseX, simular.mouseY);
clickPoint = simular.localToGlobal(clickPoint)
simular.buttonMode = true;

var nx =  clickPoint.x-simular.width/2;
var ny =  clickPoint.y-simular.height/2;
Tweener.removeTweens(this.simular);
Tweener.addTween(this.simular, {x:nx, y:ny, delay:0, time:0.5, transition:"easeInOutQuart"} );

}

function onOut(e:Event) {
setFloat();
}

function setFloat() {
var nx=randomNumber(initX,initX-dX);
var ny=randomNumber(initY,initY-dY);
var delay =randomNumber(0,2);
//trace("setFloat",nx, ny);
Tweener.addTween(this.simular, {x:nx, y:ny, delay:delay, time:2, transition:"easeInOutQuart",onComplete:setFloatHandle} );

}

function setFloatHandle() {
//var nx=randomNumber(initX,);
//var ny=randomNumber(3,7);
//trace("setFloatHandle",initX, initY);
Tweener.addTween(this.simular, {x:initX, y:initY, time:1, delay:0, transition:"easeInOutQuart", onComplete:setFloat} );
}

function randomNumber(low:Number=NaN, high:Number=NaN):Number {
var low:Number=low;
var high:Number=high;

if (isNaN(low)) {
throw new Error("low must be defined");
}
if (isNaN(high)) {
throw new Error("high must be defined");
}

//return Math.round(Math.random() * (high - low)) + low;

return (Math.random() * (high - low)) + low;
}


}// end class


}



下載

http://tmp.webco.tw/flash/mosquito/mosquito.swf

沒有留言: