проблема с доступом к динамическим видеоклипам по имени в Adobe Animate - PullRequest
0 голосов
/ 14 февраля 2019

Я делал это миллион раз, но здесь это не сработало.

У меня есть game_mc внутри animate.fla.внутри этого клипа я создаю вид targettareas для размещения на нем камней.Хорошо, TargetArea - это простой Movieclip внутри моей библиотеки.

Я могу видеть все, я могу щелкнуть по области и получить имя проппера, я могу получить названия клипов внутри game_mc.

но я не могу получить к нему доступ с помощью game_mc [clipname]

for (var i:int = 1; i<= 20; i++){
    var targetArea:TargetArea = new TargetArea();
    targetArea.txt.text = String(i);
    var modu = ((i-1) %5);
    targetArea.x = 100 + modu * 340;
    var abs = int((i-1)  / 5);
    targetArea.name = "targetarea_" + String(i)+ "_mc";
    targetArea.mouseChildren = false;
    targetArea.y = 100 + (abs * 200) ;
    game_mc.addChild(targetArea);
}

for(var x:int=0;x < game_mc.numChildren;x++) {
    trace (game_mc.getChildAt(x).name);
}

for (var i:int = 1; i< 20; i++){
    var targetName:String = "targetarea_" + i + "_mc"               
    trace( game_mc[targetName].x);
}

1 Ответ

0 голосов
/ 14 февраля 2019

Я думаю, что имя, которое вы назначаете своим экземплярам TargetArea, автоматически не преобразуется в свойство объекта DisplayObject, к которому вы его прикрепляете.Насколько я помню, хотя этот небрежный способ доступа к MovieClips с использованием доступа к массиву работал до AS3.Более элегантное решение - извлечь дочерний объект с помощью getChildByName ().

trace(game_mc.getChildByName(targetName).x);

Кроме того, в случае, когда game_mc является экземпляром MovieClip или динамическим классом, вы можете сделать экземпляры TargetArea его свойством, используя:

game_mc[targetArea.name] = targetArea;

Таким образом, вы можете получить к ним доступ, используя game_mc [имя] .property впоследствии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...