- ベストアンサー
flashのクラスで
クラスのプロパティでurlと画像を設定したいのですが、 書き方が分かりません。 class a{ private var url (URL:String); private var picture (URL:String); } これは間違っているでしょうか。 この書き方はあっていますか? すみませんがお願いします。 var url=new()。。と書くのでしょうか? クラスを複製して、 それが個々に別々のurlを持つようにしたいです しみませんがお願いします
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
” private ”を付けて宣言した変数は、その名の通り、クラスの内部で私的に使用されるプロパティになります。 クラスの外に公開し、スクリプトで オブジェクト名.プロパティ名 の形で参照できるようにするには” public ”を付けます。 何も付けずに宣言した変数や関数は public と見なされるので、省略しても構いません。 ActionScript 2.0 のクラスの場合ですが、1つのクラスにつき1つの as ファイル(外部 ActionScript ファイル)を作成して定義します。 as ファイルにはクラス名と同じ名前を付けます。例えば、クラス” A ”を定義する as ファイルは、” A.as ”という名前で保存します。 フォルダにいくつかのクラス定義ファイルをまとめて整理(パッケージ化)することもできますが、今回は扱いません。 とりあえず、作ってみるとしましょう。 お使いの Flash のバージョンが書かれていませんので、さしあたって Flash 8 を例に説明します。 「ファイル」メニュー→「新規...」で、”一般”のタブから” ActionScript(AS)ファイル”を選択してください。 「アクション」パネルと同様のスクリプト編集画面になりますから、クラスを定義するスクリプトを書きます。 今回のクラスは、単純に、new 演算子でオブジェクトを作る際にパラメータを2つ受け取り、これをクラスのプロパティに設定するだけのものとします。 クラスを定義するスクリプトは、大体、次のようになります。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください) class A { //画像のURLとタイトルを保持するプロパティ public var url:String; public var picture:String; //コンストラクタ //引数 pic_url:URL pic_title:画像タイトル public function A( pic_url:String , pic_title:String ) { //プロパティに引数の値を設定する this.url = pic_url; this.picture = pic_title; } } このスクリプトを、” A.as ”の名前で、このクラスを使う fla ファイルと同じフォルダに保存してください。 **************************** 次に、クラスを使う fla ファイルを作成します。 クラスは ActionScript 2.0 以降で使用できます。1.0 でも似たようなことは可能ですが、いわゆるクラスとは少し違いますので、ここでは 2.0 のクラスとして話を進めます。 「パブリッシュ設定」で ActionScript のバージョンが 2.0 になっていることを確認して、以下のようなスクリプトをフレームに記述してみてください。 import A; //オブジェクトを作成 pic_obj1 = new A( "http://okwave.jp/" , "トップ" ); pic_obj2 = new A( "http://okwave.jp/qa3482975.html" , "この質問" ); //チェック trace( "URL = " + pic_obj1.url ); trace( "タイトル = " + pic_obj1.picture ); trace( "URL = " + pic_obj2.url ); trace( "タイトル = " + pic_obj2.picture ); 「ムービープレビュー」で、確認してみてください。 「出力」パネルに URL = http://okwave.jp/ タイトル = トップ URL = http://okwave.jp/qa3482975.html タイトル = この質問 と表示されれば、成功です。 ----------------------------------------------------------- クラスのオブジェクトが作られる時、クラス内にある、クラス名と同じ名前を持つ関数が最初に呼び出されます。 この関数を”コンストラクタ”と言います。 コンストラクタは、作られたオブジェクトがこれから行う処理のために必要な初期設定などを済ませることが主な目的ですが、初期設定の必要がなければ、何もしない空っぽの関数にしておくこともできます。 (なお、クラスにコンストラクタが定義されていない時は、何もしないコンストラクタが自動的に作成されます) 今回のコンストラクタでは、new A で渡されてくる2つのパラメータをそれぞれ、プロパティである url と picture に設定しています。 クラス A の中では、url と picture という2つの変数を定義しています。 public を付けているので、この2つは公開されるプロパティです。 普段のスクリプトの中では オブジェクト名.url オブジェクト名.picture で参照できます。 今回は受け取ったパラメータを、単にプロパティに代入しているだけですが。 例えば URL の” http:// ”が抜けていたり、パラメータが2つ必要なのに1つしかなかったなど、何らかの不備がある場合も考えられます。 これからの処理に悪影響を及ぼす可能性はないか、コンストラクタの中でチェックし、問題があるならそれなりの処理をしてからプロパティに設定すると、より頑丈なクラス設計になります。 クラスの話は複雑です。 本当に単純で基本的なクラスの例ですが、ご参考までに。
お礼
ものすごく詳しく説明くださり ありがとうございます。 すぐには理解できないのですが 何度か考えながらゆっくり見てみます。 本当にありがとうございました!!!! すみません><