AS2 - мои видеоклипы хранятся в массиве, но я не могу получить доступ к их свойствам или методам - PullRequest
0 голосов
/ 19 февраля 2012

Я сохранил серию дублированных фрагментов ролика в массиве, чтобы я мог проверить, не попала ли какая-либо из пуль в какой-либо из вражеских МС.Тем не менее, Flash не позволит мне получить доступ к свойствам или методам НА мувиклипах.

function checkHits(){//checks for hits between enemies and bullets
for (var zz = 0; zz < bulletArray.length; zz += 1)//checks for each bullet
{
for(var yy=0;yy<enemiesArray.length;yy+=1){//checks for each enemy
    trace("enemies loc"+yy+":"+enemiesArray[yy]);
    trace("bullet loc"+zz+":"+bulletArray[zz]);
    if(bulletArray[zz].hitTest(enemiesArray[yy])){
        trace("HIT!");
       removeMovieClip(bulletArray[zz]);
       removeMovieClip(enemiesArray[yy]);
       bulletArray.splice(zz,1);
       enemiesArray.splice(yy,1);
       }//end if
}//end for
 }//end for

Это код, который запускает все кадры и проверяет, ударил ли anythign.HitTest никогда не регистрируется, но если я изменю объекты hitTest, removeMovieClip работает.Поэтому я могу успешно ссылаться на объект, но не могу получить доступ к каким-либо свойствам.Если я пытаюсь, они всегда появляются неопределенными.

Для справки, вот код для генерации маркера.Обратите внимание, что обе эти функции являются функциями корневого уровня.

function dupeCircle()
{
//trace("Dupe circle initiated");
duplicateMovieClip(circlebase, "circle" + circleCount, circleCount);
bulletArray.push("circle" + circleCount);
trace(bulletArray[0]._width);
circleCount += 1;
}

Ответы [ 2 ]

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

Я решил это. Это потому, что я использовал глобальную версию duplicateMovieClio, а не версию класса. Еще раз спасибо!

0 голосов
/ 19 февраля 2012

Похоже, вы захотите использовать attachMovie() вместо duplicateMovieClip, если вы создаете экземпляр клипа в библиотеке, а не копируете уже созданный объект.В этом случае перепишите код создания следующим образом:

_root.attachMovie(circlebase, "circle" + circleCount, circleCount);
bulletArray.push(_root["circle"+circleCount]);
...