【问题标题】:Select random item from an array with certain probabilities and add it to the stage从具有一定概率的数组中选择随机项并将其添加到阶段
【发布时间】:2014-02-22 14:56:19
【问题描述】:

这是一项艰巨的任务,但我想解释一下。

我有一个包含 200 个字符串列表的数组,我希望能够随机选择一个并使用代码将其添加到舞台。我为动作脚本导出了与数组中的字符串具有相同类名的影片剪辑。另外,如果可能的话,我是否能够选择具有可预测性的字符串,例如第一个有 0.7 的机会,第二个有 0.1 等。这是我目前拥有的

var nameList:Array=["Jimmy","Bob","Fred"]

var instance:DisplayObject = createRandom(nameList);
addChild(instance);

function createRandom(typeArray:Array):*
{
// Select random String from typeArray.
var selection:String = typeArray[ int(Math.random() * typeArray.length) ];

// Create instance of relevant class.
var Type:Class = getDefinitionByName(selection) as Class;

// Return created instance.
return new Type();
}

这一切都给我带来了这个错误

ReferenceError:错误 #1065:未定义变量 [class Jimmy]。

我搜索了其他类似的线程,但没有一个结合了随机化、可预测性和 addChild() 这三个特定任务。

【问题讨论】:

    标签: arrays actionscript-3 flash


    【解决方案1】:

    我认为你有两个问题:语言问题和逻辑问题。在连接到上面代码的 .fla 中,在库中找到代表名称的每个符号,并将关联名称写入该符号的“AS 链接”列 - 例如,“Bob”、“Fred” - 只是名称, 没有标点符号。

    现在getDefinitionByName() 会找到你的“班级”

    如果您将不同的图形放入每个 MovieClip(例如,一块水果或 Bob、Jim、Fred 的照片)并运行您的程序,您每次都会在舞台上随机获得一些东西。

    这应该可以解决您的语言问题。但是逻辑问题有点难,不是吗? 这就是为什么我向您指出凯利先生的解决方案(第一个,对我来说更容易掌握)。

    【讨论】:

    • 我会将此标记为正确,但我已经弄清楚了 getdefinition 并将在稍后返回概率,感谢所有评论的人。
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多