APP下载

探讨flash中random函数的应用

2009-10-19胡年芬

新媒体研究 2009年17期
关键词:探讨应用

胡年芬

[摘要]random函数在flash里是非常有用的,可以生成基本的随机数、创建随机的移动以及随机的颜色等特效。以在flash领域多年的教学经验,结合操作实际,探讨flash动画创作中如何用好random函数产生其它不同的动画特效,并对random函数的应用作些探讨。

[关键词]探讨 flash random 应用

中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0910072-01

random在ActionScript中是一个应用相当广的函数,它的作用是获取0到指定整数之间的任意整数。利用它可以解决随机显示等效果,是创建复杂动画的基础。下面是我对flash中random函数的灵活应用进行探讨。

一、flash中random函数基本应用探讨

(一)基本的random函数的格式与功能

1.random(number)函数介绍。random(number)返回一个0-number-1之间的随机整数。参数number代表一个整数。如:trace(random(5))。

2.Math.random()。返回一个有14位精度的0-1之间的数,无参数。如:trace(Math.random())。

(二)random函数的配合使用

Math.round()、Math.ceil()、Math.floor(),这三个函数都是用来取整数。Math.round()采用四舍五入方式取最接近的整数,Math.ceil()向上取一个最接近的整数, Math.floor()向下取一个最接近的整数。如在flash脚本中: Math.round(Math.random());它可以生成一个0.0和1.0之间的一个数,然后四舍五入取一个整数。这样所生成的数字就是0或1。它可用在各有50%的可能的情况。如抛硬币,或真或假。

(三)常见的基本应用探讨

1.乘以10 的使用。是将所生成的小数乘以10,然后四舍五入取得一个整数。在flash的实例脚本中常能见到。如: Math.round(Math.random

()*10);要创建一个1到10之间的随机数,可以这样写: Math.ceil(Math.

random()*10)。

2.控制movieclip的操作。要让一个movieclip随机的在屏幕上不同的位置出现,显示的位置在0到200之间,可以这样写,注意movieclip的实例名为“bob”。

bob._x = Math.round(Math.random()*200);

bob._y = Math.round(Math.random()*200);

以上就是flash中random函数的基本用法。

二、random在自定义函数中的应用探讨

下面是我针对random函数在用户自定义函数中的应用作一些肤浅的探讨。

1.返回一个共有n位数,其中m位小数的随机数。

function randomXiao(n,m){ var a = Math.pow(10, n+m);

var b = random(a);return b=b/Math.pow(10, m); }

大家可以用trace(randomXiao(3,2))来实验一下。

2.返回一个n到m之间的随机数。

function randomNm(n,m){

if(m>=n){ returnrandom(m-n+1)+n;}

else { return false;}}

之所以用random(m-n+1)是因为随机数的范围是m-n,加上1使得m也能在里面。加上n保证随机数以n为下限。加上判断使函数更完整。

3.返回一个字母。

function randomAscii(){

var c = String.fromCharCode(random(26)+65);

if(random(2)){ return c.toLowerCase();} return c; }

4.返回一个不区分大小写的随机字母。

如果要返回大写,去掉上面的if语句。如果要返回小写,可以把if语句改为恒成立,或者去掉条件,最后一句改为:return c.toLowerCase()。

5.返回一个n到m之间的k个互异随机数。

function randomKdiffer(n,m,k){

arrayK = [];var i = 0;

while (i < k) {a = random(m-n+1)+n;

for (var j = 0; j < i; j++) {

if (a == arrayK[j]) { break;}}

if (j == i) { arrayK[i] = a;i++;} } return arrayK; }

数组arrayK中的元素即为所得值。注意到我借用了random(m-n+1)+n来返回一个n~m的随机数。所以m本身也会被返回。如果要返回m以内的数,可以把n值改为0。如果要随机返回不确定个数,可以把入口参数的K值赋为k=random(m-n);随机返回不一定互异的数,把判断去掉就可以了,注意i++不要漏掉。

以上函数算是由random直接衍生的。下面再举一个例子,可以说是衍生函数的衍生函数,会直接用到上面给出的函数,请注意。

6.在几个区域中选出随机数。

比如在1-20、45-70这两段数之间选取一个随机数。因为区域数未定,所以直接用一个确定的函数编写多有不便,这要用switch语句进行判定。我给出一个函数,返回一个1~20、45~70内的数,其它区域请读者自行修改。

function randomArea(){ var a=random(2);

switch(a){ case 0:return randomNm(1,20);break;

case 1:return randomNm(45,70);break;}}

三、常见的flash中random函数实例应用分析

实例:变色的小条。先把小条中的代码写出:

onClipEvent (load) {

i = 0;a = random(10)-5;

if (a == 0) { a = 1;}

col = new Color(this); }

onClipEvent (enterFrame) { this._x += a;i++;

if (i >= 36) { col.setRGB(random(0xFFFFFF));

a = random(10)-5;

if (a == 0) { a = 1;} trace(a);i = 0;}

if ((this._x+this._width) <= 0) {this._x = 550+this._width;}

if ((this._x-this._width) > 550) {this._x = 0-this._width;}}

用它正好说明一下setRGB的用法,请读者自行分析。

朋友,通过以上知识的探讨,您对flash中的random函数有进一步的认识吗?我个人认为:在flash的领域,只要肯放飞您的想象,用ActionScript的随机(random)+复制+循环,创作出一个星空、一群美女都是可实现的。只要您懂得如何正确灵活的使用ActionScript中的基本的语句。朋友,请走进flash的领域,快快试试吧!

参考文献:

[1]卓越科技编著,flash 8动画制作入门、进阶与提高,电子工业出版社,2007,174-198.

[2]郭亮,flash mx游戏制作精粹,海洋出版社,2006,172-181.

猜你喜欢

探讨应用
刍议小学足球教学的训练教学方法
体育旅游产业的特征及发展策略探讨
税收筹划的效应问题
GM(1,1)白化微分优化方程预测模型建模过程应用分析
煤矿井下坑道钻机人机工程学应用分析
气体分离提纯应用变压吸附技术的分析
会计与统计的比较研究