использовать имена экземпляров в массиве, ошибка # 1010, as3 - PullRequest
1 голос
/ 22 июня 2010

Я хочу использовать экземпляры в массиве, но получаю ошибку.Как я могу использовать экземпляры в массиве?Спасибо.

Ошибка 1010 'Термин не определен и не имеет свойств'

//I'm trying to make two array objects disappear
var pink:Array = ["boxInstance1","boxInstance2"];
/*
THIS WORKS
boxInstance1.visible = false;
boxInstance2.visible = false;
*/
//THIS DON'T 'or with one instance in the array it works'
this[pink].visible = false;

Ответы [ 3 ]

1 голос
/ 22 июня 2010

С одним экземпляром в массиве flash преобразует массив в строку, и в качестве значения вы получаете boxInstance1;массив с несколькими значениями преобразуется в boxInstance1,boxInstance2 (возможно) и, следовательно, в ошибку.Используйте значение по правильному индексу, используя []

this[pink[0]].visible = false;
//equivalent to
boxInstance1.visible = false; 

this[pink[1]].visible = false;
//equivalent to
boxInstance2.visible = false; 

for(var i:Number = 0; i < pink.length; i++)
  this[pink[i]].visible = false;
0 голосов
/ 22 июня 2010

С другой стороны:

var pink:Array = [this.boxInstance1, this.boxInstance2];
for each(var box:Sprite in pink)
    box.visible = false;
0 голосов
/ 22 июня 2010

Вам нужно использовать getChildByName():

var mc:MovieClip = new MovieClip();
mc = getChildByName(pink[0]);
mc.visible = false;

mc = getChildByName(pink[1]);
mc.visible = false;

Если вы хотите сделать что-то для всех экземпляров, используйте цикл for:

var mc:MovieClip;
for(var i:int = 0; i < pink.length; i++)
{
    mc = MovieClip(getChildByName(pink[i]));
    mc.visible = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...