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世界中整合它们。
源码可以在这里下载: