AS3 - вызов функции в корневой шкале времени из класса - PullRequest
2 голосов
/ 09 декабря 2011

Я хочу вызвать функцию, находящуюся в корневой временной шкале Flash, из внешнего класса.

Этот код из класса:

private function loadImage(event:Event):void
{
    addToContainer()   
}

На основной временной шкале:

function addToContainer():void
{
    trace("Called")
} 

Как с этим справиться?

Ответы [ 4 ]

2 голосов
/ 09 декабря 2011

Вам нужно поместить addToContainer () в шкалу времени?

Я бы рассмотрел удаление вашего кода целиком из временной шкалы и создание «класса документа» с добавленным в нем addToContainer. Это облегчает отслеживание того, на что вы смотрите.

public class FunctionTest extends MovieClip {
   protected static var _this:FunctionTest;
   function FunctionTest() { _this = this; }
   public static function get application_root():FunctionTest { return _this; }
   public function addToContainer():void { trace("Called"); }
}

Теперь у вас есть два способа написания loadImage. Если он находится внутри DisplayObject (согласно предыдущему комментарию Марти Уоллеса), вы можете сказать что-то вроде

(this.root as FunctionTest).addToContainer();

Если нет, у вас есть альтернатива, которую вы можете использовать из любого места:

FunctionTest.application_root.addToContainer();

Если вам действительно нужно определить addToContainer () на временной шкале, то вам нужно будет инициализировать внешний класс со ссылкой на корень дисплея. Сделайте что-то вроде:

public class LoadImageClass {
   protected var _stored_root:MovieClip;
   function LoadImageClass(new_root:MovieClip) { this._stored_root = new_root; }
   public function loadImage():void {
      this._stored_root.addToContainer();
   }
}
0 голосов
/ 06 августа 2015

Лучший и самый простой способ - использовать основную временную шкалу в качестве параметра в вашем классе:

установить переменную в вашем классе:

public static var _this:Object;

теперь в вашем основном наборе временной шкалыэта переменная:

MyClass._this=this;

теперь в вашем классе у вас есть доступ к основной временной шкале с помощью переменной _this:

_this.addToContainer()

IH☺PE, это помогает!

0 голосов
/ 14 декабря 2011

Вы можете добавить прослушиватель событий для вашего объекта в основной временной шкале. Когда это событие сработает на вашем объекте, будет вызвана ваша функция на главной временной шкале.

//Main Timeline
var obj:YourExternalClass = new YourExternalClass();

obj.addEventListener(MouseEvent.CLICK, addToContainer);
0 голосов
/ 09 декабря 2011

Попробуйте использовать

MovieClip(root)

для доступа к основной временной шкале.

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