0

我有一个空数组,它收集一个从函数中的另一个数组中随机选择的十六进制值。我正在尝试从填充的数组中提取十六进制值并将其传递给另一个函数以随机更改粒子系统的颜色值...

private var ca:Array = new Array();
private var rc:String = ca; // pseudo...this is the string that needs to get passed

    public function addCursor(cursor:Cursor):void {

    var cc:Array = new Array("0xFFFF33", "0xFFFFFF", "0x79DCF4", "0xFF3333", "0xFFCC33", "0x99CC33");
    var rcc:String = cc[Math.floor(Math.random() * (cc.length))];
    ca.push(rcc); // 


    trace(rcc + ' 1st array');
    trace(ca + ' 2nd array');
    trace(rc + ' string to pass');

// unrelated stuff happens down here...

第一个和第二个数组都跟踪相同的十六进制值,但我找不到捕获该字符串的正确方法......我尝试了几种不同的方法,它们都返回“null”......这让我觉得这个值可能正在离开阵列之前我试图抓住它?

我删除ca.pop()了在稍后的函数中调用的函数,只是为了看看是否rc仍会返回 null 并且确实如此。

4

1 回答 1

1

rcc 是一个字符串,而不是一个数组。

所以

trace(rcc + ' chosen hex as a string');

但我不明白为什么你需要一个数组(ca)来保存一个字符串。

这会起作用:

private var rc:String;
private var cc:Array = new Array("0xFFFF33", "0xFFFFFF", "0x79DCF4", "0xFF3333", "0xFFCC33", "0x99CC33");

public function addCursor(cursor:Cursor):void {

rc = cc[Math.floor(Math.random() * (cc.length))];

trace(rc + ' the chosen hex');

}
于 2012-09-17T18:19:57.247 回答