ActionScript 3 - ссылки на статические методы - PullRequest
0 голосов
/ 13 мая 2011

Есть ли способ заставить статический метод действовать над объектом своего класса, который уже находится на сцене, без использования ключевого слова "this"? Я имею в виду, как «универсальный объект этого класса: делай то, что я тебе говорю, независимо от имени твоего экземпляра»

Моя цель - создать метод, который будет вызываться любым объектом этого класса, основываясь на изменении значения внешней переменной, но, поскольку я не могу использовать ключевое слово "this" для ссылки на каждый экземпляр, я мог бы не придумать решение.

Заранее спасибо!

1 Ответ

0 голосов
/ 01 июля 2011

Нет, если у вас нет доступа к этому объекту другим способом (что-то вроде этого):

package
{
    import flash.display.MovieClip
    import flash.events.Event
    public class Something extends MovieClip
    {
        private static var group:Vector.<Something> = new Vector.<Something>();

        public function Something()
        {
            // doing this on added and removed is generally more reliable.
            // BUT! it does not give you accesses to all instances, only the
            // ones which currently have a parent
            addEventListener( Event.ADDED, addedHandler ); 
            // that said, since AS3 has no destructor, removed is the only 
            // way to clean up instances
            addEventListener( Event.REMOVED, removeHandler );
        }

        public static function doSomethingWithClass():void
        {
            for( var i:int = 0; i < group.length; i++ )
            {
                trace( group[ i ] );
            }
        }

        private function addedHandler( event:Event ):void
        {
            group.push( this );
        }

        private function removeHandler( event:Event ):void
        {
            group.splice( group.indexOf( this ), 1 );
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...