Ошибка массива цветов. Ошибка? - PullRequest
0 голосов
/ 20 февраля 2011

K. Я застреваю здесь.

Я пытаюсь создать массив с разными значениями цвета.

Моя проблема в том, что когда я делаю ... 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 тогда равен этому имени, когда пользователь щелкает его.

У меня есть другой мувиклип с цветами в нем, и вышеупомянутая функция вызывается, чтобы проверить, произошло ли какое-либо изменение teamColor, и, если оно произошло, действовать соответствующим образом. (Идея иметь teamColor равным 0 такова, что если пользователь щелкает два раза, ничего не меняется. Я другие условия для других цветов, все в пределах одной и той же функции). Так я исправил код. Это не то, что я хотел, потому что это не массив (имеется в виду, казалось бы, бесконечное количество teamColors и, следовательно, команд), но он подойдет для меня. Если у кого-то есть предложения, не стесняйтесь.

Ответы [ 2 ]

2 голосов
/ 20 февраля 2011

Я не специалист по ActionScript, но мне кажется, что currentColor - это объект, который передается в массив по ссылке. Это означает, что все записи массива, которым вы присвоили currentColor, будут указывать на один и тот же объект currentColor, а не на копию. Мой совет - сделать копию, а затем назначить ее в массив.

Было бы намного лучше, если бы вы могли дать мне больше кода для просмотра. Например, цикл, содержащий этот сегмент кода, был бы хорош. Если я найду другую ошибку, я отредактирую свой ответ.

0 голосов
/ 20 февраля 2011

здесь я создаю, а затем добавляю простые цветные объекты 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...