Вызов метода класса из другого класса во Flash - PullRequest
0 голосов
/ 05 сентября 2011

Если у меня есть класс документа:

package {
    import flash.display.MovieClip;

    public class Main extends MovieClip {
        public function Main() {

        }            
        public function SomeRandomMethod():void {

        }
    }
}

Как я могу вызвать SomeRandomMethod отсюда:

package {
    public class AnotherClass {
        public function AnotherClass() {

        }            
        public function AnotherRandomMethod():void {
            /* I need to use SomeRandomMethod here */
        }
    }
}

1 Ответ

3 голосов
/ 05 сентября 2011

Есть несколько способов добиться этого.Одним из способов было бы передать ссылку на класс документа в конструктор другого класса:

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

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