我有一个空数组,收集从函数中另一个数组中随机选择的十六进制值。我试图从填充的数组中拉出十六进制值,并将其传递给另一个函数,以随机更改粒子系统的颜色值...
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并且确实如此。
答案 0 :(得分: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');
}