1 не работает, потому что свойство stage
объекта (при условии, что оно отображается) является объектом Stage.По умолчанию ваш класс документов будет первым дочерним элементом этапа, если вы не вставили туда что-либо, используя setChildIndex(0)
или addChildAt(someObject,0)
.Таким образом, вы должны иметь возможность доступа через класс документа с
this.stage.getChildAt(0).GreenLight1;
2 не работает, потому что вы используете свой корень как Sprite.Это не Sprite, это ваш класс документов, который является потомком Sprite, так что это должно работать:
this.root.GreenLight1
Я собираюсь пропустить номер три и попытаться предложить более прямойрешение.У вас есть этот символ в вашей библиотеке, вы установили для него «Экспорт для ActionScript» и дали ему имя класса GreenLight
.Хорошее начало.Так что теперь в любом месте вашего кода вы можете сделать что-то вроде этого:
var myGreenLight:GreenLight = new GreenLight();
, который создал ссылку (myGreenLight
) на новый экземпляр вашего символа GreenLight.Теперь вы можете присоединить это к дереву отображения вашего вызывающего класса с помощью
addChild(myGreenLight);
Если предположить, что класс, в котором вы кодируете, сам находится на сцене, то ваш экземпляр GreenLight должен быть видимым.Вы также можете из любого объекта, находящегося на сцене, вызвать this.stage.addChild(myGreenLight);
, чтобы прикрепить экземпляр GreenLight непосредственно к сцене, если это было то, что вы хотели.
Итак, наконец, реальный вопрос.У вас есть экземпляр GreenLight
на сцене под названием GreenLight1
.(Обратите внимание, что по соглашению только имена классов начинаются с заглавной буквы, имена переменных и экземпляров должны начинаться со строчной буквы).У вас есть другой класс, который также находится в дереве отображения, и вам нужно получить ссылку на GreenLight1
, которая находится на сцене.Вот функция для этого:
function getMovieClip($instanceName:String,$scope:DisplayObjectContainer):DisplayObject
{
var child:DisplayObject;
var loopLength:int = $scope.numChildren;
for(var i:int = 0; i < loopLength; i++) {
child = $scope.getChildAt(i);
if(child.name == $instanceName) return child;
}
//didn't find it
return null;
}
, и вы используете ее из любого объекта, который может получить доступ к сцене следующим образом:
var greenLightRef:GreenLight = getMovieClip('GreenLight1',this.stage) as GreenLight;