正在加载...

更新为函数调用。这个函数(initSeed)返回一个数组,不妨将其理解成一张“概率分布表”。先介绍使用方法,具体函数结构见后。

我们要传递进入的参数有三个。
1、字符串PNAME,其实本来这个变量应该是封装在函数内部的,但是由于使用了this动态索引一些变量,不得不导致调用这样一个“种子生成函数”会破坏当前时间轴上的变量。于是加入一个PNAME参数以确保每次调用的时候不误伤时间轴变量。哪位朋友有更好的方法请告知在下
2、一个数组,sample_arr,这个数组存放着所有可能出现的实例。
3、一个数组,pList_arr,他用来存放以上实例出现的概率分布。
关于这两个数组,结合实际例子可以解释清楚:

var mySampleArr:Array = new Array(“mc1″,”mc2″,”mc3″,”mc4″,”mc5″,”mc6″,”mc7″,”mc8″,”mc9″,”mc10″,”mc11”);
var myListArr:Array = new Array(20,40,20,230,20,40,20,20,20,40,90);

这里声明了两个数组,我们可以将其作为参数传递给initSeed。
第一个数组表示一个系列字符串,其实也就是MovieClip的名称,而第二个数组描述他们出现的权重,它并不代表概率。其和并不一定要等于100,但是必须是大于1的整数,不可描述为诸如50%(0.50)之类的百分比,如果要求对等出现,不妨描述为(1,1)。

下面来一个具体的实例

var mc1:MovieClip = this.createEmptyMovieClip(“mc1”, this.getNextHighestDepth())

var mc2:MovieClip = this.createEmptyMovieClip(“mc2”, this.getNextHighestDepth())
var mc3:MovieClip = this.createEmptyMovieClip(“mc3”, this.getNextHighestDepth())
var mc4:MovieClip = this.createEmptyMovieClip(“mc4”, this.getNextHighestDepth())
var mc5:MovieClip = this.createEmptyMovieClip(“mc5”, this.getNextHighestDepth())
var mc6:MovieClip = this.createEmptyMovieClip(“mc6”, this.getNextHighestDepth())
var mc7:MovieClip = this.createEmptyMovieClip(“mc7”, this.getNextHighestDepth())
var mc8:MovieClip = this.createEmptyMovieClip(“mc8”, this.getNextHighestDepth())
var mc9:MovieClip = this.createEmptyMovieClip(“mc9”, this.getNextHighestDepth())
var mc10:MovieClip = this.createEmptyMovieClip(“mc10”, this.getNextHighestDepth())
var mc11:MovieClip = this.createEmptyMovieClip(“mc11”, this.getNextHighestDepth())

function drawBox(_tar_mc:MovieClip, Yplace:Number)
{
_tar_mc.lineStyle(0,0,100)
_tar_mc._x = 10
_tar_mc._y = Yplace;
_tar_mc.lineTo(1,0)
_tar_mc.lineTo(1,5)
_tar_mc.lineTo(0,5)
_tar_mc.lineTo(0,0)
}

drawBox(mc1, 10);
drawBox(mc2, 20);
drawBox(mc3, 30);
drawBox(mc4, 40);
drawBox(mc5, 50);
drawBox(mc6, 60);
drawBox(mc7, 70);
drawBox(mc8, 80);
drawBox(mc9, 90);
drawBox(mc10, 100);
drawBox(mc11, 110);

function onEnterFrame()
{

var pickSeed = mySeedArr[random(mySeedArr.length)];
this[pickSeed]._width++;

}[/code]
其中我们抽样的具体做法就是:

var pickSeed = mySeedArr$[$random(mySeedArr.length)$]$;

进行this引用

this$[$pickSeed$]$

就能找到mc了

其实这个算法很简单,大学里面概率考试能考30分你就能看懂了……写得很长是因为一些变量表述很烦琐,如果你有更好的办法也麻烦通告在下。

function initSeed(PNAME:String, _sample_arr:Array, pList_arr:Array):Array
{
var pList_Length:Number = pList_arr.length;
var pGL_n:Number = pList_Length;
var SEED_arr:Array = new Array();

//////////////////// MAKE UP THE PERCENT DISTRIBUTING ARRAY == START

while (pGL_n>0)
{
pGL_n–;

var pgetPrev_nm = PNAME+(pGL_n+1).toString();
var pgetNow_nm = PNAME+(pGL_n).toString();

if (this$[$pgetPrev_nm$]$ != undefined)
{
this$[$pgetNow_nm$]$ = this$[$pgetPrev_nm$]$ + pList_arr$[$pGL_n$]$;
}
else
{
this$[$pgetNow_nm$]$ = pList_arr$[$pGL_n$]$;
}
}
//////////////////// MAKE UP THE PERCENT DISTRIBUTING ARRAY == END
for (var i:Number = 0; i<pList_Length; i++)
{
trace(“p”+i+”: “+this$[$PNAME+i$]$)
}

for (var _ID:Number = pList_Length; _ID >= 0; _ID–)
{
var pgetPrev_nm = PNAME+(_ID+1).toString();
var pgetNow_nm = PNAME+(_ID).toString();
if (this$[$pgetPrev_nm$]$ == undefined)
{
for (var _i:Number = this$[$pgetNow_nm$]$; _i > 0; _i–)
{

SEED_arr.push(_sample_arr$[$_ID$]$);
}
}
else
{
for (var _i:Number = this$[$pgetNow_nm$]$;_i > this$[$pgetPrev_nm$]$;_i–)
{
trace(pgetNow_nm)
SEED_arr.push(_sample_arr$[$_ID$]$);
}
}
}
return SEED_arr;
}

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 才 4 条评论
  1. zhzhangjatwxf 2006-05-11 05:28:11

    没看懂…
    我在北京,白石桥,公司 在知春路城铁附近,盈都大厦,swagvault,交个朋友!!

  2. aw 2006-05-11 06:11:38

    哦,好啊!
    我马上也要去北京。

    北漂……

  3. zhzhangjatwxf 2006-05-12 08:21:53

    我QQ:276531440
    我Gmail::: zhangjatwxf@gmail.com

  4. aw 2006-05-12 08:46:33

    嗬嗬,够直接:)

    我给你去一封gmail。

[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍