永发信息网

帮忙解一下这个FLASH代码

答案:2  悬赏:60  手机版
解决时间 2021-05-02 03:53

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);//添加舞台监听器。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
黑莓手机用的什么系统,怎么查看黑莓手机操作
DNF暑期礼包送的远古精灵的秘药活动结束会消
求vmware workstation7破解版
中国移动鸿达手机城我想知道这个在什么地方
神机妙算刘伯温,檀风公主有没有和秦理成亲
朋友女儿过满月祝福语,朋友女儿摆满月酒怎么
江西警官学院好的吗
青阳县土地流转服务中心在哪里啊,我有事要去
为什么晚上的时间和白天一样长呢
鸿润九州做的工艺品 质量怎么样?
怎样查询自己手机支持什么样的QQ格式?
叶子离开,树会疼吗?
如何学好高中数学?(文科)
结婚用指环可以吗
诺基亚2608是否支持联通手机卡
推荐资讯
男生适合戴什么类型和颜色的围巾?
QQ炫舞怎么用幸运硬币
无聊哈介绍嗲什么
三百字的宋词,求三百字左右的唐诗宋词
国际联盟为维护士界和平提出了哪些原则
我09版的CAD,在菜单栏中有些菜单没了(如:工
你说现在那些人扎都喜欢踩在自己人头上趴在别
人为什么有些时候会变得对一切都毫不再意?
三桥建材市场怎么去啊,有知道地址的么
翻译:Writed your name all over one heart
谁能帮我邀请开通QQ牧场?
如何做美味驴肉
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?