FLASH发射小球效果
分享一下FLASH发射小球效果及as3代码,库中画一个小球,取类名为Ball,当作子弹用。如果点击的速度过快,在FLASH编译下会报错:
ArgumentError: Error #2025: 提供的 DisplayObject 必须是调用者的子级。
at flash.display::DisplayObjectContainer/removeChild()
at _fla::MainTimeline/bulletMove()
这个效果的代码如下,来源:《FLASH AS3入门与精通》
var bulletx:Number=275;
var bullety:Number=400;
var speed:Number=5;
stage.addEventListener(MouseEvent.CLICK,shoot);
function shoot(e) {
var radian:Number=getRadian(bulletx,bullety,this.mouseX,this.mouseY);
var bullet:Ball=new Ball();
bullet.x=bulletx;
bullet.y=bullety;
bullet.spdx=Math.cos(radian)*speed;
bullet.spdy=Math.sin(radian)*speed;
bullet.addEventListener(Event.ENTER_FRAME,bulletMove);
e.target.addChild(bullet);
}
function bulletMove(e) {
var obj:MovieClip=e.target as MovieClip;
obj.x+=obj.spdx;
obj.y+=obj.spdy;
if (obj.y<0||obj.x<0||obj.x>550||obj.y>400) {
obj.removeEventListener(Event.ENTER_FRAME,bulletMove);
stage.removeChild(obj);
}
}
function getRadian(x1:Number,y1:Number,x2:Number,y2:Number):Number {
var tx:Number=x2-x1;
var ty:Number=y2-y1;
var radian:Number=Math.atan2(ty,tx);
return radian;
}
没有评论 ▼