Как использовать SWF-высоту для переменной класса в actionscript3? - PullRequest
0 голосов
/ 18 сентября 2011

Я хочу использовать высоту в [SWF height = 200] для переменной класса.

Я попробовал следующий код, но это вызывает ошибку компиляции.

const SWF_HEIGHT:int = 200;

package {
    import flash.display.*;

    [SWF(backgroundColor=0xffffff, width=400, height=SWF_HEIGHT)]

    public class Main extends Sprite {
        public static const Y:int = SWF_HEIGHT / 2;
    }
}

Если я использую число, 200 вместо константы SWF_HEIGHT, ошибка компиляции не происходит.
Но я не хочу писать одно и то же число в двух местах.

Есть ли способ избежать написания одного и того же числа в 2 местах?

Ответы [ 2 ]

1 голос
/ 18 сентября 2011

- ОТВЕТ ИЗМЕНЕНО -

Вы должны сделать это наоборот:

package {
    import flash.display.*;

    [SWF(backgroundColor=0xffffff, width=400, height=200)]

    public class Main extends Sprite {
        private static var _swfHeight : int = -1;
        public static function get swfHeight():int{
            return _swfHeight;
        }
        public function Main():void{
            _loader = this.loaderInfo;
            _loader.addEventListener(Event.COMPLETE, loaded );
        }
        private var _loader : LoaderInfo;
        private function loaded( event : Event ) : void{
            _swfHeight = _loader.height;
        }
    }
}
0 голосов
/ 18 сентября 2011

Почему вы хотите установить высоту в метатеге?Вы можете просто сделать это в конструкторе:

const SWF_HEIGHT:int = 200;

package {
    import flash.display.*;

    [SWF(backgroundColor=0xffffff, width=400)]

    public class Main extends Sprite {
        public static const Y:int = SWF_HEIGHT / 2;

        public function Main():void {
            height = SWF_HEIGHT;
        }
    }
}
...