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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     AS3 孫クラスからドキュメントクラスの【stage】を参照する方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
donny
Åê¹ÆNo.45595
投稿日時: 2010-8-27 18:40
新米
居住地:
投稿: 3
使用環境:
MAC 10.6.2 Snow Leopard
Flash CS3
AS3 孫クラスからドキュメントクラスの【stage】を参照する方法
孫クラスからドキュメントクラスのステージを参照する方法として下記のような手段を取っていますが、
もっと効率の良い方法はありますでしょうか?

ドキュメントクラス 【Index.as】
子クラス 【Child.as】
孫クラス 【Grandchild.as】

■ドキュメントクラスのコンストラクタ内にて、子クラスに 【this】 を渡します。

var child:Child = new Child( this );


■子クラス 【Child.as】 のコンストラクタ内にて、ドキュメントクラスから受け取った 【this】 を孫クラスに渡します。

//【Child.as】のコンストラクタ
public function Child( target:Index ) 
{
	var grandchild:Grandchild = new Grandchild( target );
}


■孫クラス 【Grandchild.as】 のコンストラクタ内にて、ドキュメントクラスのステージを参照します。

//【Grandchild.as】 のコンストラクタ
public function Grandchild( target:Index ) 
{
	trace( target.stage );
}


以上のような方法で孫クラスからドキュメントクラスのステージは参照できるのですが、
この制作方法ですと、孫クラスを新しく作る度にドキュメントクラスの 【this】 を渡す必要があり手間を感じます。

孫クラスからドキュメントクラスのステージを効率良く参照するための準備や制作方法をご存知無いでしょうか
よろしくお願い致します。


野中文雄
Åê¹ÆNo.45596
投稿日時: 2010-8-27 19:15
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: AS3 孫クラスからドキュメントクラスの【stage】を参照する方法
「子」「孫」と表現されていますけど、ドキュメントクラスを継承している訳ではないですよね。つまり単に子から孫の順に呼出しているだけで、「赤の他人」なのではないでしょうか。そうであれば、参照を渡していくのもやむを得ない気がします。

強いて赤の他人から直接参照できるようにしたいのでしたら、たとえばこんな感じでしょうか。

■ドキュメントクラス
public class Index extends Sprite{
	internal static var _stage:Stage;
	public function Index() {
		_stage = stage;
		// var child:Child = new Child(this);
		var child:Child = new Child();
	}
}


■子クラス【Child】のコンストラクタ
public function Child() {
	// var grandchild:Grandchild = new Grandchild(target);
	var grandchild:Grandchild = new Grandchild();
}


■孫クラス【Grandchild】のコンストラクタ
public function Grandchild() {
	// trace( target.stage );
	trace(Index._stage);
}

引用:
donnyさんは書きました:
孫クラスからドキュメントクラスのステージを参照する方法として下記のような手段を取っていますが、
もっと効率の良い方法はありますでしょうか?

ドキュメントクラス 【Index.as】
子クラス 【Child.as】
孫クラス 【Grandchild.as】
...[中略]...
以上のような方法で孫クラスからドキュメントクラスのステージは参照できるのですが、
この制作方法ですと、孫クラスを新しく作る度にドキュメントクラスの 【this】 を渡す必要があり手間を感じます。


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

ゲスト
Åê¹ÆNo.45597
投稿日時: 2010-8-27 19:20
Re: AS3 孫クラスからドキュメントクラスの【stage】を参照する方法
どこからでも参照できる方法として静的変数を使うというのはいかがでしょうか? 一般的にはシングルトンというデザインパターンとして、ActionScriptではよく利用されています。

ドキュメントクラス
package  {
	import flash.display.*;
	public class Index extends Sprite {
		public static var instance:Index;
		public function Index() {
			instance = this;
		}
		public var moja:String = "index";
	}
}


任意のクラス
package  {
	public class Grandchild {
		public function Grandchild() {
			var o:Index = Index.instance; // ドキュメントクラスを参照できる
			trace(o.moja); // Indexインスタンスのmojaプロパティを参照(出力は "index")
		}
	}
}


※複数のIndexインスタンスがある場合には、別の方法を検討されたほうがいいかもですが、ドキュメントクラス(コンテンツに一つしかインスタンスが作られないような状況)では、扱いやすい方法だと思います。

[追記]
野中さんと回答内容が被っていたようで失礼しました。
donny
Åê¹ÆNo.45605
投稿日時: 2010-8-30 16:44
新米
居住地:
投稿: 3
使用環境:
MAC 10.6.2 Snow Leopard
Flash CS3
Re: AS3 孫クラスからドキュメントクラスの【stage】を参照する方法
野中文雄様
ご投稿頂きましてありがとうございます。

教えて頂きましたスクリプトにて無事【stage】を参照できました。
ありがとうございます。
【internal】や【static】についてよく理解しておりませんので、
勉強したいと思います。

また【子】や【孫】の概念についての理解が不十分なところ、
ご指摘頂きまして大変勉強になりました。

ありがとうございました。
donny
Åê¹ÆNo.45606
投稿日時: 2010-8-30 16:45
新米
居住地:
投稿: 3
使用環境:
MAC 10.6.2 Snow Leopard
Flash CS3
Re: AS3 孫クラスからドキュメントクラスの【stage】を参照する方法
clockmaker様
ご投稿頂きましてありがとうございます。

頂きましたスクリプトを試させて頂きました。
ドキュメントクラスの【stage】だけでなく、
ドキュメントクラスの変数も参照できるのですね。
とても便利そうです。

【シングルトン】という言葉は初耳ですので、
勉強してみたいと思います。

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

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