オブジェクト指向とクラス/テキストフィールド

Time-stamp: "2010-12-02 Thu 19:37 JST hig"

資料

Adobe, DoCoMo, au, Softbankmobile などのサイトで, Flash Lite一般の, またはそのキャリア特有の技術情報を探そう.

自宅でも開発しよう

Flash Professional CS5 には, 30日間使用可能な無償体験版(Windows/Mac)があります. ユーザ登録が必要です.

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

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

    
    mb1.moveTo(0,200);
    
    var mb4:MovieClip=attachMovie("mb","mb3",this.getNextHighestDepth());
    mb4._x=300;
    mb4._y=300;
    mb4.moveTo(100,100);
    // mb3 でも同様の動作
    
    
  4. さらに, 以下を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;
    	}	
    }
  5. MovieClipを継承したクラスに, そのオブジェクト特有の変数や関数(onEnterFrameのようにあらかじめ決められているものも含む)を定義することができます.

課題

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

テキストフィールドの使用


var a:String;
var b:Number;

this.createTextField("textinput", this.getNextHighestDepth(),10,10,120,30);
textinput.type="input"
textinput.text="test";

this.createTextField("textoutput", this.getNextHighestDepth(),10,40,120,30);
textoutput.text="no input";

this.createTextField("numinput", this.getNextHighestDepth(),10,70,120,30);
numinput.type="input"
numinput.text="3";

this.createTextField("numoutput", this.getNextHighestDepth(),10,100,120,30);
numoutput.text="no input";

textinput.onChanged = function(){
	a=textinput.text;
	textoutput.text=a + "が入力されました";
}

numinput.onChanged = function(){
	b=numinput.text;
	numoutput.text=b +"の7倍は" + b *7;
}

課題

テキストフィールドに何かを入力したらそれが何かに反映するようなアプリを作ろう. 例えばMovieClipの大きさや透明度や速度が変化するとか.

このサイトのコンテンツ

QRcode to hig3.net

http://hig3.net