请教FLASH AS2.0函数调用的二个疑问

问题详细如下:... 问题详细如下: 展开
 我来答
百度网友98ba30d
2013-10-04 · TA获得超过1616个赞
知道大有可为答主
回答量:2623
采纳率:50%
帮助的人:2837万
展开全部

哦,你看的是《actionscript 权威指南》这本书,这本书很好,值得好好学习。
function moveBall_1(){
  Ball._x += 10;
  Ball._y += 10;
}
function moveBall_2(){
  Ball._x += 10;
  Ball._y -= 15;
}
问题1:moveBall_1()函数执行的时候,小球是向屏幕右下角方向运动的。moveBall_2()函数执行的时候小球向屏幕右上角运动,x和y轴上不同的增量当然会使得小球运动的距离不同了。如果希望小球向任意方向运动的距离都一样的话,应该使用三角函数值来实现,一会我用函数封装的形式给你例子。
问题2:例子中的movieClip()函数是经过封装后的函数,我们编写自定义函数的时候应该像这样编写。封装后的函数它的灵活性体现在函数可以应用到不同的对象上,而且可以使用不同的参数达到不同的效果,因此函数在重复使用的时候非常方便。第一种函数的写法,只能固定对一个对象进行操作,而封装后的函数可以用参数的形式来指定。
例如,movieClip(Ball1, 10, 10)可以让Ball1向右下角运动,movieClip(Ball2, -20, -20)可以让Ball2向左上角以更双倍的距离移动。我做了一个复制多个小球,并让小球以不同方向等距离(即相同的速度)运动。如果用第一种函数来写moveBall()的话用起来就没有这么方便了。代码如下:

 

//radius是小球每次运动的距离,即小球运动的速度
var radius:Number = 10;
//total是小球的数量
var total:Number = 30;
ball._visible = false;
duplicateBall(ball, total);

function duplicateBall(obj, num)
{
 for (var i:Number = 1; i <= num; i++)
 {
  duplicateMovieClip(obj, "ball" + i, i);
 }
}
this.onEnterFrame = function()
{
 for (var n:Number = 1; n <= total; n++)
 {
  moveBall(this["ball" + n], radius, (n-1) * (360/total) * Math.PI / 180);
 }
 if (ball1._x < 0 || ball1._x > Stage.width)
 {
  duplicateBall(ball, total);
 }
};
function moveBall(mc, distance, angle)
{
 mc._x += distance * Math.cos(angle);
 mc._y += distance * Math.sin(angle);
}

瘾晴败2822
2013-10-04 · TA获得超过217个赞
知道小有建树答主
回答量:553
采纳率:66%
帮助的人:624万
展开全部
当然第二个函数灵活多了。第二个函数在调用时,不用去修改函数本身,就需要修改参数就能实现效果。而且可以用于多个影片剪辑。而且移动的距离都可以自己改变参数来改变。如果还不明白的话,我举个例子,比如有二个影片剪辑。实例名分别为mc1,mc2如果用第一个函数来实再的话就要写二个函数。分别为
function moveBall1(){
mc1._x+=15
mc1._y-=15
}
function moveBall2(){
mc2._x+=15
mc2._y-=15
}
moveBall1()
moveBall2()
而如果用第二个就方便多了。写法如下:
Function moveClip(theClip,xDist,yDist){
theClip._x+=xDist
theClip._y+=yDist
}
moveClip(mc1,15,-15)
moveClip(mc2,15,-15)
这是二个影片,如果多个影片要实现不同的移动,则更方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
早年不知曲中味
2013-10-04 · TA获得超过2656个赞
知道大有可为答主
回答量:2334
采纳率:100%
帮助的人:1758万
展开全部
编程是要实际做东西的,不是坐而论道的,你做都不做,能看出啥?
第一个问题,你把+和-看成是移动的方向就理解了。这个数值只是移动快慢,跟距离没关系。
第二个问题,灵活不灵活,到底多还是少,你要单独看是看不出来的。就好比洗衣机,你洗一双袜子,当然会说,我看不出用洗衣机比不用有啥好处。
假设要运动的有20个不同的mc,有不同的运动速度,你看看是哪个灵活。
哪里不懂可找我问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式