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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     Stageクラスにプロパティを追加したい。
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
マッスル進藤
Åê¹ÆNo.2689
投稿日時: 2004-1-6 14:31
新米
居住地: 東京
投稿: 14
使用環境:
Windows2000,FlashMX2004Professional,ie6
Stageクラスにプロパティを追加したい。
マッスルです。あけましておめでとうございます。
早速ですがAS2.0で困っています。
StageにプロパティavailWidth,availHeightを追加したいのですが、

Stage.scaleMode = "showAll";
Stage.availWidth = Stage.width;
Stage.availHeight = Stage.height;
Stage.scaleMode = "noScale";

とすると

**エラー** 'availWidth' という名前のプロパティはありません。
**エラー** 'availHeight' という名前のプロパティはありません。

となってしまいます。MXの時は問題なかったのですが…。

Stageなどのクラスにプロパティを追加する方法は何か別の方法があるのでしょうか?
野中文雄
Åê¹ÆNo.2692
投稿日時: 2004-1-6 14:50
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Stageクラスにプロパティを追加したい。
まず、原則から。ActionScript 2.0は、強く型づけされたシンタックスです。したがって、Objectなどのダイナミック(dynamic)なクラスを例外として、クラス内に宣言されていないプロパティを追加することはできません。

クラスに追加・拡張をしたい場合には、継承によりサブクラスを定義して、そこにプロパティやメソッドを定義するというのが正道です。または、動的にロパティやメソッドを追加する必要のあるクラスは、dynamic修飾子によりダイナミックなクラスとして定義すべきだということになります。

引用:
MUSCLEさんは書きました:
早速ですがAS2.0で困っています。
StageにプロパティavailWidth,availHeightを追加したいのですが、

とはいえ、ダイナミックでないクラスに対して、強引にプロパティ・メソッドを設定する方法はあります。
Stage.scaleMode = "showAll";
// Stage.availWidth = Stage.width;
// Stage.availHeight = Stage.height;
Stage["availWidth"] = Stage.width;
Stage["availHeight"] = Stage.height;
Stage.scaleMode = "noScale";

引用:
とすると

**エラー** 'availWidth' という名前のプロパティはありません。
**エラー** 'availHeight' という名前のプロパティはありません。

となってしまいます。MXの時は問題なかったのですが…。


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

マッスル進藤
Åê¹ÆNo.2694
投稿日時: 2004-1-6 15:12
新米
居住地: 東京
投稿: 14
使用環境:
Windows2000,FlashMX2004Professional,ie6
Re: Stageクラスにプロパティを追加したい。
引用:
まず、原則から。ActionScript 2.0は、強く型づけされたシンタックスです。したがって、Objectなどのダイナミック(dynamic)なクラスを例外として、クラス内に宣言されていないプロパティを追加することはできません。

クラスに追加・拡張をしたい場合には、継承によりサブクラスを定義して、そこにプロパティやメソッドを定義するというのが正道です。または、動的にロパティやメソッドを追加する必要のあるクラスは、dynamic修飾子によりダイナミックなクラスとして定義すべきだということになります。

なるほどです。と、言っても半分ぐらいしか理解できていないかも知れません。野中さんのサイト時間かけて熟読させていただきます。

引用:
とはいえ、ダイナミックでないクラスに対して、強引にプロパティ・メソッドを設定する方法はあります。
Stage.scaleMode = "showAll";
// Stage.availWidth = Stage.width;
// Stage.availHeight = Stage.height;
Stage["availWidth"] = Stage.width;
Stage["availHeight"] = Stage.height;
Stage.scaleMode = "noScale";

お?!!なりました!!ありがとうございます。
ただ、
Stage["availWidth"] = Stage.width;
Stage["availHeight"] = Stage.height;
でなって
Stage.availWidth = Stage.width;
Stage.availHeight = Stage.height;
でならない理由が良く分からないのですが…。
僕の中では、Stage["availHeight"]とStage.availHeightは同等のものとインプットされています…。
野中文雄
Åê¹ÆNo.2697
投稿日時: 2004-1-6 16:27
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Stageクラスにプロパティを追加したい。
考えられるのは、ActionScript 2.0のシンタックスが、あくまでコンパイル時のチェックにすぎないという点です。Macromediaさんが意図したかどうかは別にして、配列アクセス[]のチェックが省略されたのではないかと思います。

また、MX 2004より前から、配列アクセスのシンタックスチェックはドットアクセスよりも緩いものでした。
my_array = [];
// my_array.0 = 10;  // MXでもシンタックスエラー
my_array["0"] = 10;
trace(my_array[0]);  // 出力: 10
trace(my_array.length);  // 出力: 1

ただ、基本的には同じはずです。
引用:
MUSCLEさんは書きました:
僕の中では、Stage["availHeight"]とStage.availHeightは同等のものとインプットされています…。


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

マッスル進藤
Åê¹ÆNo.2703
投稿日時: 2004-1-6 17:25
新米
居住地: 東京
投稿: 14
使用環境:
Windows2000,FlashMX2004Professional,ie6
Re: Stageクラスにプロパティを追加したい。
なるほどです。分かったような、分かっていないような?!素直に受け止めます。

MX2004も野中本楽しみにしてます。その前に、Macromedia MAX 2004ですね。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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