Hatena::Groupactionscript

ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記

2009年02月05日 木曜日

Stageの大きさ

| 07:55 | Stageの大きさ - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 を含むブックマーク はてなブックマーク - Stageの大きさ - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 Stageの大きさ - ActionScript(AS3)やFlexを勉強しようと思ってはじめた日記 のブックマークコメント

stageの大きさを取得しようと、stage.stageWidthを使ってみたのですが、取得できず。

なんでだろう?と調べてみると、「EnterFrame」が実行されないと取得できない、という話がありました。EnterFrame?どうやら、Flashのフレーム?タイムラインらしい。

Flexには、初期化のイベントがいくつかあって、creationCompleteだけじゃなく、色々とあるようです。

ということで、EnterFrameじゃないと、stageオブジェクトがnullらしい。でも、EnterFrameイベントのときもnullみたいなんですよねぇ。なんでだろう?

ダメな例

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
	<![CDATA[
		import mx.controls.Alert;
		import flash.display.DisplayObject;
		
		public var w:Number = stage.stageWidth;

		public function init():void{
			Alert.show(w as String);
		}
	]]>
</mx:Script>
</mx:Application>

secondlifesecondlife2009/02/05 14:57Flex なら applicationComplete イベントの後、取得しないとタイミングによっては無理かとおもいます。
あと Flex では、stage に直接アクセスすることは少ないと思いますよ。

d4-1977d4-19772009/02/06 08:18ありがとうございます。初期化のイベントをみていたら、applicationCompleteイベントのあとじゃないと、取得できないみたいですね。
Flexだと、stageに直接アクセスすることってあまりないんですか?