ķ。我被困在这里了。
我正在尝试使用不同的颜色值制作数组。
我的问题是,当我做...
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,因此,团队)但它会为我做。如果有人有任何建议,请随时提出建议。
答案 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