var vx:Number = 0;
var vy:Number = 0;
var friction:Number = 0.1;
var ball:Sprite=new Sprite();
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0,0,20);
ball.graphics.endFill();
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
vx = Math.random() * 15 - 5;
vy = Math.random() * 15 - 5;
addChild(ball);
function onEnterFrame(event:Event):void {
var speed:Number = Math.sqrt(vx * vx + vy * vy);
var angle:Number = Math.atan2(vy, vx);
if (speed > friction) {
speed -= friction;//
} else {
speed = 0;
}
vx = Math.cos(angle) * speed;
vy = Math.sin(angle) * speed;
ball.x += vx;
ball.y += vy;
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);
//定义一个vx变量
var vx:Number = 0;
//定义一个名为vy的变量
var vy:Number = 0;
//定义一个名叫friction的变量
var friction:Number = 0.1;
//新建一个Sprite对象其为可视化容器
var ball:Sprite=new Sprite();
//为ball的graphics设定以个红色的填充色
ball.graphics.beginFill(0xff0000);
//能后用这个填充画一个半斤为20px的圆
//其圆在自身坐标系的0,0位置
ball.graphics.drawCircle(0,0,20);
//画完了结束填充
ball.graphics.endFill();
//让这个圆行红色球的位置在舞台的中央
ball.x = stage.stageWidth / 2;
ball.y = stage.stageHeight / 2;
//随机得到x方向的速度 其范围在-5 ~10的范围
vx = Math.random() * 15 - 5;
//随机得到y方向的速度 其范围在-5 ~10的范围
vy = Math.random() * 15 - 5;
//把ball添加到根显示列表中。再者根在加入到舞台上的。因此就是把ball加入到舞台显示。
addChild(ball);
//这个函数其实就是针对Event.ENTER_FRAME事件侦听器
function onEnterFrame(event:Event):void {
//其实这里的速度 是vx和vy方向的共速度。也就是向量可以翻一下高中的物理
var speed:Number = Math.sqrt(vx * vx + vy * vy);
//这里是得到速度方向以x轴的夹角
var angle:Number = Math.atan2(vy, vx);
//如果速度大于0.1的话用当前的速度减去0.1
//否则得话就为0没有速度
//如果你配合运动学来讲的话
//每过一帧就把速度减少也就是减速度了
//最终没有速度呵呵
if (speed > friction) {
speed -= friction;//
} else {
speed = 0;
}
//这里计算当前一帧内x方向移动的大小
vx = Math.cos(angle) * speed;
//这里是技术当前一帧内y方向移动的大小
vy = Math.sin(angle) * speed;
//并且使其距离加大
ball.x += vx;
ball.y += vy;
}
//这里当前是为判断帧是否要跟新时触发的Event.ENTER_FRAME时间注册一个侦听器
//因此这个函数在经过每帧都会繁复的执行
addEventListener(Event.ENTER_FRAME, onEnterFrame);
这段代码 首先给一个处速度 当然也给速度的方向。能后让球做均减速运动呵呵。到速度为0.
其实 你可以再走了 改进代码
if (speed > friction) {
speed -= friction;//
}
这个大括号内写一个removeListener
var vx:Number = 0;
var vy:Number = 0;
var friction:Number = 0.1;
var ball:Sprite=new Sprite();
ball.graphics.beginFill(0xff0000);//填充颜色,这个是红色。
ball.graphics.drawCircle(0,0,20);//画圆,位置为x=0;y=0,半径为20。
ball.graphics.endFill();//停止填充颜色。
ball.x = stage.stageWidth / 2;//设置位置x为舞台宽度的一半。
ball.y = stage.stageHeight / 2;//设置位置y为舞台高度的一半。
vx = Math.random() * 15 - 5;//随机产生一个值。
vy = Math.random() * 15 - 5;//同上。
addChild(ball);//把ball添加到舞台。
function onEnterFrame(event:Event):void {
var speed:Number = Math.sqrt(vx * vx + vy * vy);//让speed等于vx*vx+vy*vy的平方根。
var angle:Number = Math.atan2(vy, vx);//让angle等于vy/vx的反正切。
if (speed > friction) {
speed -= friction;//如果speed大于0.1就减去0.1。
} else {
speed = 0;//小于0.1就让它等于0。
}
//下面几句你应该都能看懂吧。
vx = Math.cos(angle) * speed;
vy = Math.sin(angle) * speed;
ball.x += vx;
ball.y += vy;
}
addEventListener(Event.ENTER_FRAME, onEnterFrame);//添加舞台监听器。