颜色数组错误。错误?

时间:2011-02-20 06:04:17

标签: arrays actionscript-3 colors

ķ。我被困在这里了。

我正在尝试使用不同的颜色值制作数组。

我的问题是,当我做... teamColor[i] = currentColor ...我的数组中的所有颜色值都变为currentColor。

(我会上传更多的代码,但这将是一个巨大的混乱,考虑到我的代码到处都有来自影片剪辑的引用,最深达3层。但是,这无论如何都可能无关紧要(可能),因为我在主时间轴上使用颜色值对此进行了测试,没有任何引用或深入嵌套的任何内容)

我认为这只是一个可怕的错误,但如果不是(我希望不是),请指导我如何解决这个问题。

我想补充一点,我尝试在那里添加字符串,字符串保持其原始的,预期的值,而颜色表现出相同的现象。

[部分解决] :      我通过为每种颜色创建单独的变量来改变我的代码,而不是将变量放入数组中(不是我真正想做的,但它有效)。我的代码看起来像这样: `

if (teamColor != 0)
{
    this["team"+teamColor+"Color"] = new ColorTransform(0,0,0,1,currentColor.redOffset,currentColor.greenOffset,currentColor.blueOffset,0)
    teamColor = 0
    namebox.addboxes()//function in a movieclip
}`

teamColor现在是一个int,它根据用户从具有动态生成名称的影片剪辑中单击哪个框进行更改,这取决于循环中创建的变量值。 (E.G:'tempboxname [ttns] .name = i;') 当用户单击它时,teamColor等于该名称。

我有另一个带有颜色的movieclip,调用上面的函数来检查是否发生了任何teamColor更改,如果有,则相应地采取行动。 (让teamColor等于0的想法是,如果用户点击两次,则没有任何变化。其他颜色的其他条件,都在同一个函数内)。 这就是我修复代码的方法。 这不是我想要的,因为它不是一个数组(意味着看似无数的teamColors,因此,团队)但它会为我做。如果有人有任何建议,请随时提出建议。

2 个答案:

答案 0 :(得分:2)

我不是ActionScript wiz,但我看来是currentColor是一个通过引用传递给数组的对象。这意味着您指定currentColor的所有数组条目将指向相同的currentColor对象,而不是副本。我的建议是制作一份副本,然后将其分配到数组中。

如果你能给我更多的代码,那会好得多。例如,包含该代码段的循环会很好。如果我发现不同的错误,我会编辑我的答案。

答案 1 :(得分:0)

这里我正在创建然后将简单的0xRRGGBB颜色对象添加到矢量中。然后将颜色对象解析为0xRRGGBB十六进制字符串并进行跟踪。

当然,这并不是你想要的,但希望它会对你有所帮助。

var red:uint = 0xFF0000;
var green:uint = 0x00FF00;
var blue:uint = 0x0000FF;

var colors:Vector.<uint> = new Vector.<uint>()
colors.push(red, green, blue);

for each    (var color:uint in colors)
            {
            var output:String = color.toString(16);

            while   (output.length < 6)
                    output = "0" + output;

            trace("0x" + output.toUpperCase());
            }

输出:

//0xFF0000
//0x00FF00
//0x0000FF