flash random问题
不知道怎么开口 举个例子 高手看看我哪里有问题
比方我想做一个随即在场景中不断出现小黑点的效果
先创建一个小黑点图样的MC 把MC拖到“场景1”中在属性里把MC的名称改成123 新建一个图层“场景2”第一帧动作:
duplicateMovieClip(123,'c',c) setProperty(c,_x,random(500)) setProperty(c,_y,random(400))
第二帧动作:
c = c+1; gotoAndPlay(1);
结果效果是 屏幕上只有2个黑点,一个是场景1中的 固定不变的黑点 一个是随机产生的 黑点 可是我要的效果是 很多黑点 谁能告诉我正确的编写方法
还有一个问题 我如果想在固定的区域随机产生函数 我可以这样写么
setProperty(c,_x,random(100-500)) setProperty(c,_y,random(100-400))
之前有提问过 if (random(10) == 0) { gotoAndPlay(7); } else { gotoAndPlay(1); } 这个函数,能够随机进行2个前进的函数。 请问,我想制作一个点击一下就会随机跳跃到4个帧之中的随机一个。 随机运行4个帧的任意一个。 谢谢大家
2012-05-07 15:31提问者采纳
on (release){ var r:Number = Math.floor(Math.random()()*4)+1; gotoAndPlay(r); }
就这样。
- 追问
-
不好意思我是新手 on (release){ var r:Number = Math.floor(Math.random()*4)+1; gotoAndPlay(r); }
中4,1还有gotoandplay之后的r分别代表什么意思? 谢谢能详细的指点下啊
- 回答
-
不用进,最重要是有学到。
on (release){ var r:Number = Math.floor(Math.random()*4)+1; //创建一个r变数,r等于 近似值(随机数()乘于4)+1; //Math.floor()虽然类似近似值,不过它的功用是把小数点去掉 //Math.random()让系统随机选出一个大于0却小于1的小数点数目字。 //Math.random()*4就是让随机数乘于4,就会得到大于0却小于4之间的随机数。 //由于Math.floor()的关系,比如Math.random()给的随机数是0.213465 乘于4等于0.85386.虽然大过5但是Math.floor()会把它去掉变成0,当然如果r变成0的话系统就会出错,因为没有第0帧,所以要+1.而且刚刚最大的随机数是3.9999999【Math.floor还是一样会把它变成3】,所以+1就成了4了 gotoAndPlay(r); //r就是刚刚创建、并给予1~4之间的随机数,变数的名字。也就是说r储存了刚刚创建的随机数 }
- 追问
-
那么好比我现在一共有60帧 前10帧都是按钮,用来输入 on (release){ var r:Number = Math.floor(Math.random()*4)+1; gotoAndPlay(r); } 之后的20到60之间都是每10帧为一个小动画, 我希望在第1帧到10帧的这个按钮按下去就会随机跳跃到 20,30,40,50这4个小动画中的随机一个动画的话。
我应该具体怎么样写这个函数呢? 谢谢
- 回答
-
如果前10帧只有一个按钮的话【按钮从第一帧出现到第十帧吗】?
所以你的跳转页是20,30,40和50嘛。
所以脚本就加: on (release){ var r:Number = Math.floor(Math.random()*4)+2; //这里的+1变为+2,因为一开始是2开头 //这样随机数出来就是0,1,2,3 答案加2 就是 2,3,4,5了 gotoAndPlay(r);//这里的r乘于10,所以上面的答案乘于10的话,就会随机跳转到20,30,40和50帧了。 }
- 追问
-
抱歉,但是关键的写法我还是没看懂 on (release){ var r:Number = Math.floor(Math.random()*4)+1; gotoAndPlay(r*10); } 是这样写嘛?关键的R乘以10的地方的写法对不对?
- 回答
-
因为你的动画开头都是第20、30、40和50帧对吧?
所以我们只需要让flash选出2、3、4、5中的一个随机数。
再将随机数乘于10就能拿到20、30、40和50了。
就是gotoAndPlay(r*10)转到并且播放“r乘于10的答案”的帧
- 提问者评价
-
谢谢啊,我弄出来了,可以这样随机运行出来了。感谢您啊。另外能请教您一下别的随机指定吗?
2008-10-16 14:10提问者采纳
C的值没有初始化,在第一帧写C=1; 如果想在固定区域,比如你想得到X的值为400到500,Y的值为300到500,可以这样写:x=400+random(100);y=300+random(200) 另外,MC的名称最好不要命名为数字。 还有什么问题?