スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AS3.0 練習めも 5

・カスタムクラスの練習

さすがにソース丸写したものを自分のブログに載せちゃまずかったかな。
次から気をつける。

そんなわけでカスタムクラスの練習です。
自分でカスタムクラスを作るために、まずはカスタムクラスの定義が必要。
それにはpackageを使います。
使い方は、

package パッケージ名{ 
  public class クラス名{
    //クラスプロパティ
    public static var 変数名:タイプ;
    public static const 定数名:タイプ;
    //クラスメソッド
    public static function メソッド名():タイプ {
      ステートメント;
    }
    //コンストラクタ
    public function クラス名(){
      ステートメント;
    }
    //インスタンスプロパティ
    public var 変数名:タイプ;
    public const 定数名:タイプ;
    //インスタンスメソッド
    public function メソッド名():タイプ {
      ステートメント;
    }
  }


手元の資料によると、
クラスプロパティ:クラスの変数、定数
クラスメソッド:クラスの機能
コンストラクタ:インスタンスを作り、初期化する関数
インスタンスプロパティ:インスタンスの変数、定数
インスタンスメソッド:インスタンスの機能

という説明はされてるが、これで理解しろって方が無理な話だな。
とりあえず、staticがついているものがクラスメンバーということは分かった。
プロパティとメソッドをあわせてメンバーって言うらしいよ。
逆にstaticの付かないプロパティとメソッドはインスタンスメンバーだ。

とりあえずここは練習のためにカカッとサンプルを写す。
変数名だけは変えよう。
何のソースなのかというと、インスタンスが作られる度に変数cldが増えていくというもの。

package {
  public class SampleClass {
    public static var fam:uint=0;
    public static const papa:String = "パパ";
    public static function ppt():void {
      trace("papa=" + papa);
    }
    public function SampleClass() {
    }
    public var cld:Number=0;
    public const cldmx:Number=5;
    public function seicross():void {
      cld=++cld;
      trace("子供増えた");
    }
  }
}


というソースを、flaファイルではなくasファイルに書きます。
ファイル名はカスタムクラス名と同じでないといけないらしいです。
ここではSampleClass.asという名前で保存。

パッケージ名は省略してもいいらしい。

パッケージの中身を見ていこう。
クラスプロパティ:クラスの変数fam、定数papa
クラスメソッド:クラスの機能ppt()「『papa=パパ』を出力する」
コンストラクタ:インスタンスを作り、初期化する関数 なし
インスタンスプロパティ:インスタンスの変数cld、定数cldmx
インスタンスメソッド:インスタンスの機能seicross()「変数cldを加算し『子供増えた』を出力」

で、これasファイルなので当然これだけでは動きません。このクラスを使うためのflaファイルを作ろう。
適当に新しいflaファイルを作り、メインフレームに以下のソースを写します。
なお、新しいflaファイルはさっきのasファイルと同じフォルダに置かないとダメらしい。flaファイルのファイル名はなんでもいい。
このソースはクラスメンバーのテストみたいなものです。
コンストラクタとインスタンスメンバーについては後回し。

var pp:String = SampleClass.papa;
trace( SampleClass.papa);
trace(pp);
SampleClass.ppt();


以下のように出力されます。

パパ
パパ
papa=パパ


一個ずつ機能を理解していくか。
var pp:String = SampleClass.papa;
クラスSampleClass内の定数papaをflaファイルのppという変数に代入。
trace( SampleClass.papa);
trace(pp);

papappを出力しています。
これ2つともやってることは同じなんだよね。
代入元と代入先をそれぞれ出力してるだけなので当然同じものが出ます。

SampleClass.ppt();
クラスSampleClass内のppt()メソッドを動かしています。
クラスの機能で『papa =パパ』という一文が出力されます。

基本的な使い方はこんな感じなんだろう。
まだよく理解はしてないが、こういうのは数こなして慣れていくしかないですな。

さて次は、さっき飛ばしたインスタンスについて理解していこう。

別のflaファイルを作り、メインフレームに以下のソースを書く。

var smpObj:SampleClass = new SampleClass();
trace(smpObj.cld);
smpObj.seicross();
trace(smpObj.cld);
smpObj.seicross();
trace(smpObj.cld);


var smpObj:SampleClass = new SampleClass();
これでクラスのインスタンスを作る。この一文はそのまま覚えてしまおう。

trace(smpObj.cld);
クラスインスタンスのcldという値を出力。cldはインスタンスプロパティ。
smpObj.seicross();
インスタンスsmpObjに対してインスタンスメソッドseicross()を実行。cldの値を加算し、"子供増えた"を出力する。

で、実行するとこういう風に出力される。

0
子供増えた
1
子供増えた
2


これでインスタンスメンバーについてはちょっと分かった。使いこなすには慣れが必要だな。
次はコンストラクラに触れてみよう。

ちなみに自分が使ってる参考書籍ですが、
詳細!ActionScript3.0入門ノート
著:大重美幸

です。お世話になってます。
リンク先は著者によるサポートページ?なのかな?


実に自然なアフィも貼っとく。

関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

oisu-

Author:oisu-
趣味はゲームと深夜アニメ実況。
絵を描いたりFlashゲーを作ったりもするけど、一つのことにのめり込むと他のことがおざなりになるので結局あまり成果が出ない。その上根気が続かないのですぐ飽きる人。

pixivb

FC2カウンター
検索フォーム
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
円卓の生徒
円卓の生徒応援バナー

XBOX360用ダンジョンRPG『円卓の生徒』を全力で支援中!
Twitter

Twitter Updates

    follow me on Twitter
    広告
    円卓の生徒応援バナー


    ここからアフィ注意
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。