トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     TLF テキストボックスを配置すると、クラスから stage 変数が取得できない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tg_jp
Åê¹ÆNo.47286
投稿日時: 2011-4-1 12:17
新米
居住地:
投稿: 2
使用環境:
TLF テキストボックスを配置すると、クラスから stage 変数が取得できない
表題の現象がでているのですが、固有の現象なのかどうか不明です。
また、何か回避方法等ありますでしょうか?

Mac版 Flash CS5 11.0.2.489 を Mac OSX 10.6.7 で使用しています。

再現手順
1. 新規に ActionScript 3.0 で fla ファイルを作成し、ステージにテキストフィールドを配置します。CS5 の場合、TLF テキストがデフォルトで使用されます。
2. fla ファイルのクラス欄に適当なクラス名を入力し、クラスファイルを作成します。
3. コードのコンストラクタ部分に、 trace( stage ); を入力します。クラスファイルは下記のようになります。

package  {
	
    import flash.display.MovieClip;
    
    public class test extends MovieClip {
        
        public function test() {
            // constructor code
            trace( stage );
        }
    }
}


このプロジェクトをコンパイルすると、出力パネルには null とでます。1 で配置したテキストをクラシックにしてやると、想定通り [object Stage] と出力されます。

できれば TLFテキストを使用したいのですが、この場合手順が間違っているのでしょうか。

よろしくお願いいたします。
野中文雄
Åê¹ÆNo.47287
投稿日時: 2011-4-1 13:19
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: TLF テキストボックスを配置すると、クラスから stage 変数が取得できない
flashx.textLayoutパッケージのクラスを使うとコンストラクタからStageにアクセスできない」をお読みください。おそらく仕様と思われます。ただ、インスタンスの生成過程について、正規のドキュメントに説明がほしいところです(私の探したかぎりでは、見当たりませんでした)。
引用:
tg_jpさんは書きました:
Mac版 Flash CS5 11.0.2.489 を Mac OSX 10.6.7 で使用しています。

再現手順
1. 新規に ActionScript 3.0 で fla ファイルを作成し、ステージにテキストフィールドを配置します。CS5 の場合、TLF テキストがデフォルトで使用されます。
2. fla ファイルのクラス欄に適当なクラス名を入力し、クラスファイルを作成します。
3. コードのコンストラクタ部分に、 trace( stage ); を入力します。クラスファイルは下記のようになります。
package  {
	
    import flash.display.MovieClip;
    
    public class test extends MovieClip {
        
        public function test() {
            // constructor code
            trace( stage );
        }
    }
}

このプロジェクトをコンパイルすると、出力パネルには null とでます。1 で配置したテキストをクラシックにしてやると、想定通り [object Stage] と出力されます。


----------------
 

tg_jp
Åê¹ÆNo.47291
投稿日時: 2011-4-2 10:32
新米
居住地:
投稿: 2
使用環境:
Re: TLF テキストボックスを配置すると、クラスから stage 変数が取得できない
返信ありがとうございます。リンク先の方法で回避できました。

まとめますと、TLF テキストをインスタンスとして配置/定義したドキュメントクラスのコンストラクタ内では、 stage 変数にはアクセスできないので、TLF テキストを持つドキュメントクラスのコンストラクタで、stage 変数を参照/設定(stage.scaleMode や stage.align 等)したい場合には、addedToStage ( Event.ADD_TO_STAGE ) イベントを経由する。

package  {
	import flash.display.MovieClip;
	import flash.events.Event;
	
	public class test extends MovieClip {
		
		public function test() {
			// constructor code
			addEventListener( Event.ADDED_TO_STAGE, onAdded );
		}
		
		private function onAdded ( e:Event ) {
			removeEventListener( Event.ADDED_TO_STAGE, onAdded );
			
			trace( stage );
		}
	}
}


ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops