ステージの参照とシングルトン #1

October 8, 2007

話として古いけれどfladdict.net blog『AS3 で stageを参照する場合の注意点』に紹介があるように、ステージを参照するとき注意が必要になる。
その解決策として、『[AS3] stageとrootを参照する方法(blog.nium.jp)』にデザインパターンのシングルトンを利用した解決法がある。
シングルトンを覚えたいのもあり、ステージ参照の復習と含め、試し。

ステージ参照にどんな注意点があるかの試し①

サンプルソース

ドキュメントクラスMainに、ステージを参照するTestクラスをインスタンス化し、addChild、removeChild前後でどう結果が変わるかを試してみる。

Main.as

var test:Test = new Test();
//test.init();// Error #1009
addChild(test);
test.init();
removeChild(test);
//test.init();// Error #1009

Test.as

public function init():void
{
trace(stage.stageWidth,stage.stageHeight);
}

addChildより前、removeChildの後、つまり表示リストから外れたときにTestクラスからステージを参照すると、『TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。』になる。


ステージ参照にどんな注意点があるかの試し②

サンプルソース

次に、Test.asにステージリサイズイベントを設定してみる。
testがMain.asでremoveChildされた後にステージをリサイズした時に、ステージを参照するとエラー(#1009)が出る。
ただし、ステージリサイズ時のイベント処理で、ステージを参照しなければエラーは出ない。

Test.as

public function init():void
{
// ステージリサイズイベント追加
stage.addEventListener(Event.RESIZE,stageResize);
// ステージサイズ出力
trace(stage.stageWidth,stage.stageHeight);
}
// ステージリサイズ時の処理
private function stageResize(e:Event):void
{
trace("ステージを参照しなければエラーなし");
//trace(stage.stageWidth,stage.stageHeight);// Error #1009
}

リサイズ時、ステージ参照が必要な場合はtestをremoveChildするタイミングでステージリサイズイベントを削除しておかないとエラーが発生してしまう。

ということで、『AS3 で stageを参照する場合の注意点(fladdict.net blog)』ではStageReferenceクラスを作成し、ステージサイズを管理している。と、ここまでは理解可能。

ここまでを前置きとして、次回はシングルトンを使ってステージ参照を解決する方法を試してみる。

カテゴリー: 


Posted by scratchbrain at October 8, 2007 4:34 PM ブックマークに追加する

Trackback

Trackback URL for this entry:

Post a Comment


検索

このブログを検索

サイトコンセプト

レディオヘッド、Flash・ActionScript 3.0、Processing、アートに関すること。日記・雑感、読書感想など。
[SCRATCHBRAIN.NET ホーム]
[SCRATCHBRAIN プロフィール]
[お問い合わせ]
[Twitter]

リンク

  • 嫁と更新。レシピ、子育て
  • バルセロナ観光ガイド
  • ポケット・アナリシス
  • 洋楽ブックマーク
  • こんなライヴに行きました

広告

おすすめ

最近のエントリー

カテゴリー

タグクラウド

全てのエントリー一覧

RSSフィード

月別アーカイブ

powered by Movable Type

hosted by

あわせて読みたいブログパーツ