オブジェクト指向 --- シンボルとリンクされたクラス

Time-stamp: "2011-11-24 Thu 09:39 JST hig"

オブジェクト指向---シンボルとリンクされたクラス

  1. 空のフォルダを作りその中に空のTestClass.fla ファイルを作ります.
  2. 外部のイメージをシンボル化してライブラリに登録します. このシンボルのプロパティで,
    • 名前: 何でもいい
    • 種類: ムービークリップ
    • ActionScript用に書き出し:チェック
    • 1フレーム目に書き出し:チェック
    • 識別子(リンケージ名):mb
    • クラス:MovingBall
    としましょう.
  3. シンボルをライブラリからステージにドラッグしてインスタンス化しましょう. 2個のインスタンスを作ります. それぞれを選択した状態で, ウィンドウ>プロパティでインスタンス名を, それぞれ mb1,mb2としましょう.
  4. 以下のTestClass.asを作り, いつものようにTestClass.flaの第1フレームのフレームアクションでincludeします.

    
    mb1.moveTo(0,200);
    
    var mb4:MovieClip=attachMovie("mb","mb3",this.getNextHighestDepth());
    // mb は使うシンボルのリンケージ名. 
    // 作成されたインスタンスをmb3と命名(インスタンス名)
    // 返り値はそのインスタンスへの参照.  mb3 と mb4 は同じものを指す
    
    mb4._x=300;
    mb4._y=300;
    mb4.moveTo(100,100);
    // mb4 を mb3 と書き替えても同じ動作
    
    
  5. さらに, 以下をMovingBall.asを同じフォルダに保存します. 大注意: このファイル名は任意ではありません. 上のクラス名と一致させる必要があります.
    
    class MovingBall extends MovieClip {
    	
    	private var destx:Number=200;
    	private var desty:Number=200;
    	private var velocity:Number=1;
    	
    	public function MovingBall(){
    		// MovingBall がインスタンス化されたときの処理
    	}
    	
    	public function moveTo(destx:Number, desty:Number){
    		this.destx=destx;
    		this.desty=desty;
    	}
    	
    	public function setVelocity(v:Number){
    		this.velocity=v;
    	}
    		
    	function onEnterFrame(){
    			_x+=(destx-_x)/100*velocity; // 近づくにつれてだんだんゆっくり
    			_y+=(desty-_y)/100*velocity;
    	};	
    }
  6. MovieClipを継承したクラスに, そのオブジェクト特有の変数や関数(onEnterFrameのようにあらかじめ決められているものも含む)を定義することができます.

課題

銃弾など, 大量に発生して独自の動きをするMovieClipに対してクラスを定義して動きをプログラムしよう. そうすれば for 文を使って存在するインスタンス全てに対して実行, とかしないで済む.

このサイトのコンテンツ

QRcode to hig3.net

https://hig3.net