Есть несколько способов добиться этого.Одним из способов было бы передать ссылку на класс документа в конструктор другого класса:
package {
public class AnotherClass {
private var _doc:Main
public function AnotherClass(doc:Main) {
_doc = doc;
}
public function AnotherRandomMethod():void {
_doc.SomeRandomMethod();
}
}
}
или на саму функцию
package {
public class AnotherClass {
public function AnotherClass() {
}
public function AnotherRandomMethod(doc:Main):void {
doc.SomeRandomMethod();
}
}
}
Вы также можете использовать одноэлементный дизайншаблон, объявив глобальную статическую переменную и присвоив ей класс документа.Хотя синглтоны считаются антишаблоном .Например:
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
public static var instance:Main;
public function Main() {
instance = this;
}
public function SomeRandomMethod():void {
}
}
}
затем
package {
public class AnotherClass {
public function AnotherClass() {
}
public function AnotherRandomMethod():void {
Main.instance.AnotherRandomMethod();
}
}
}
Другой способ - использовать шаблон локатора службы (хотя некоторые рассматривают его как анти-шаблон).http://gameprogrammingpatterns.com/service-locator.html