A闪的 BLOG 技术与人文
这是主类,调用其他分类
package {
import flash.display.Sprite;
import flash.ui.Mouse
public class main extends Sprite {
public var circle:circle_mc = new circle_mc();
public var crosshair:crosshair_mc = new crosshair_mc();
public var newmouse:newmouse_mc = new newmouse_mc();
public var ball:ball_mc = new ball_mc();
public function main():void {
Mouse.hide();
addChild(circle);
addChild(crosshair);
addChild(newmouse);
addChild(ball);
}
}
}circle_mc class
这是你可以移动里面准星的那个大圈圈的类
package {
import flash.display.Sprite;
public class circle_mc extends Sprite {
public function circle_mc():void {
x = 250;
y = 200;
}
}
}我只是简单的把它放在舞台中央
newmouse_mc class
这是鼠标的替代品
package {
import flash.display.Sprite;
import flash.events.Event;
public class newmouse_mc extends Sprite {
public function newmouse_mc():void {
addEventListener(Event.ENTER_FRAME,on_enter_frame);
}
public function on_enter_frame(e:Event):void {
x=stage.mouseX;
y=stage.mouseY;
}
}
}它只是跟随目标而已…
crosshair_mc class
准星跟随鼠标但不能进入大圈圈内
package {
import flash.display.Sprite;
import flash.events.Event;
public class crosshair_mc extends Sprite {
public function crosshair_mc():void {
addEventListener(Event.ENTER_FRAME,on_enter_frame);
}
public function on_enter_frame(e:Event):void {
var par:main=this.parent as main;
var circle_limit:Number = par.circle.width/2-width/2
x=stage.mouseX;
y=stage.mouseY;
var dist_x:Number=x-par.circle.x;
var dist_y:Number=y-par.circle.y;
var distance:Number=dist_x*dist_x+dist_y*dist_y;
if (distance>circle_limit*circle_limit) {
var angle:Number=Math.atan2(dist_y,dist_x);
x=250+circle_limit*Math.cos(angle);
y=200+circle_limit*Math.sin(angle);
}
}
}
}ball_mc class
最后,小球跟随准星并且有弹性效果
package {
import flash.display.Sprite;
import flash.events.Event;
public class ball_mc extends Sprite {
public var friction:Number=0.9;
public var speed_scale:Number=0.1;
public var xspeed:Number=0;
public var yspeed:Number=0;
public function ball_mc():void {
addEventListener(Event.ENTER_FRAME,on_enter_frame);
addEventListener(Event.ADDED_TO_STAGE,on_added_stage);
}
public function on_enter_frame(e:Event):void {
var par:main=this.parent as main;
var dist_x:Number = (par.crosshair.x-x)*speed_scale;
var dist_y:Number = (par.crosshair.y-y)speed_scale;
xspeed+=dist_x;
yspeed+=dist_y;
xspeed=friction;
yspeed*=friction;
x+=xspeed;
y+=yspeed;
}
public function on_added_stage(e:Event):void {
var par:main=this.parent as main;
x=par.circle.x;
y=par.circle.y;
}
}
}这就是成果啦:
这里有几种方法可以使用这些原型…我将在接下来的几天展示如何在Box2D世界中整合它们。
源码可以在这里下载: