Как ссылаться на нарисованные вручную символы из файла класса AS3? - PullRequest
0 голосов
/ 02 мая 2011

Я был занят созданием пользовательского интерфейса для файла класса, который я написал некоторое время назад.

У меня проблема со ссылками на символы на временной шкале. Все символы имеют имя экземпляра и существуют только в первом кадре (основная временная шкала в любом случае имеет только один кадр).

В данный момент я создаю экземпляр своего файла класса AS3 из слоя временной шкалы, используя

import circles.Spirograph;
var circles:Spirograph = new Spirograph(stage);

поэтому у меня есть ссылка на сцену в моем файле класса.

Если у меня есть библиотека ScrollBar на сцене с именем sb1, как мне получить к ней доступ в файле класса и как я могу получить ее значение?

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Ну, не уверен, что я полностью понимаю вашу настройку и то, как вы хотите использовать вещи ...

Что я понял, так это то, что у вас есть все ваши символы пользовательского интерфейса в основной временной шкале, тогда выиметь класс Spirograph, который содержит логику и нуждается в символах для ссылки на них.Я прав?

Быстрое решение, следующее за вашей структурой, заключается в настройке Spirograph, так что ожидается объект DisplayObject, который будет содержать все ресурсы пользовательского интерфейса.Затем вы получаете доступ к нужным экземплярам по имени из метода инициализации.

import circles.Spirograph;
var circles:Spirograph = new Spirograph( this as DisplayObject);

Затем в Spirograph

public function Spirograph(skin:DisplayObject ){
   _skin = skin;
   if(_skin.stage) _init();
   else _skin.addEventListener(Event.ADDED_TO_STAGE,_init);
}
protected function _init(e:Event = null):void{
   if(e) e.removeEventListener(e.type,arguments.callee);
   _scrollbarUi = _skin.getChildByName("sb1") as Sprite;
...
}

Вы можете проверить этот ответ , чтобы получитьидея простой реализации, но более полная, чем то, что я написал.

1 голос
/ 02 мая 2011

Есть несколько способов.Если Spirograph является DisplayObject, он будет иметь свойство «root».Вы можете преобразовать это свойство в MovieClip и затем получить доступ к sb1:

// somewhere inside your class
var mainTimeline:MovieClip = MovieClip(root);

trace(maintTimeline.sb1)

Другой вариант - передать «this» в конструктор Spirograph, поскольку вы создаете экземпляр на временной шкале, «this» относится квременная шкала:

var circles:Spirograph = new Spirograph(this);

Тогда вы можете получить переменную уровня следующим образом:

private var _stg:Stage;
public function Spirograph(main:MovieClip){

   _stg = main.stage;

   // get at sb1
   trace(main.sb1);

}

Есть еще несколько способов, но они наиболее распространены.

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