2011-09-18 10 views
0

クラス変数に[SWF高さ= 200]の高さを使用します。

次のコードを試しましたが、コンパイルエラーが発生します。私は番号を使用する場合actionscript3のクラス変数にSWFの高さを使用するにはどうすればよいですか?

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; 
    } 
} 

、代わりにconstのSWF_HEIGHTの200は、 コンパイルエラーは発生しません。
しかし、私は2つの場所に同じ番号を書いたくありません。

同じ数字を2か所に書き込まないようにする方法はありますか?

答えて

1

- 答えは編集されている - あなたはそれを他の方法で回避を行う必要があり

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

これは信頼性の高い方法ではありません。 'stageHeight'はSWFメタタグに指定された高さを常に与えるとは限りません。スクリーン外スプライトがある場合、またはシェイプのストロークがわずかにオフスクリーンの場合は、もっと大きくなることがあります。 –

+0

これは当てはまりません。あなたはステージについて話している。高さ、ステージではない。ステージ高さ。 しかし、これは正しい方法ではないという点で正しいです。私はちょうど異なる可能性を試しましたが、noScale StageScaleMode – Creynders

+0

で失敗しました。正しい答えが編集されました。私はどこかでそれをやったことを知っていたので、私はそれを探しました。これは唯一本当に信頼できるソリューションであるべきです。 – Creynders

-1

なぜメタタグに高さを設定したいのですか?あなたは、コンストラクタでそれを単に行うことができます:

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; 
     } 
    } 
} 
+0

なぜdownvote? –

関連する問題