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
沒有留言:
張貼留言