[目次|前回|次回|Reference]

Flash IDEで描いたMovieClipやボタンのインスタンスを使用する

Time-stamp: "2009-11-17 Tue 11:47 JST hig"

作品制作プロジェクト

この授業の後半では, 各自が計画を立てて一つのアプリケーションを制作します. とりあえず夢を語ってみましょう.

2010-01-18の最終回には, PowerPointなどを使って作品のプレゼンテーションを行います.

その直前の補講期間には, 自由参加で2コマ分の補講を行います. この時間内には, アプリケーション制作について相談できます.

サンプルライブラリのボタンの使用

前回は, 線を使って描いたMovieClipをボタンと見なして, onPressなどのイベントハンドラを登録しました. 今回は, あらかじめFlashに用意されているサンプルライブラリからボタンシンボルを取ってきて利用してみましょう. 今回は久しぶりに, .fla を編集するので注意. 仮にtestbuttons.flaと呼びましょう.

課題

自分のプログラムのボタンを, サンプルライブラリのボタンに置き換えてみよう.

Flash IDEのドローツールでMovieClipを作る

サンプルライブラリに収録されているものだけではなく, 自分で作成したMovieClipやボタンを作ることができます.

課題

自分のプログラムで, ボールを, 超細密に描かれた自作の画像に置き換えよう.

物体の出現・消滅

例えばブロックが現れたり, 消えたりということを実現しましょう. とりあえず, 出現・消滅させることのできる単位は MovieClipオブジェクトです. とりあえず2つの可能性があります.

  1. attachMovieClip, removeMovieClipメソッドを使って, MovieClipオブジェクトを, 画面(というか親のMovieClipオブジェクトと)接続・切り離しする
  2. MovieClipオブジェクトが画面上に存在したまま, _alpha,_visibleなどの属性を操作して, 可視化, 不可視化する

ここでは後者の方法を利用しました.


// 物体が消滅するサンプル
var moveEnabled:Boolean=true;

var ball:MovieClip = this.createEmptyMovieClip("ball",this.getNextHighestDepth());
ball.lineStyle(40,0x0000ff, 100, true, "none", "round","mitter",1);
ball.moveTo(-1,0);
ball.lineTo(+1,0);
ball.tabEnabled=false; // このムービークリップはフォーカスされない
ball._x=100;
ball._y=200;

var b1x:Number=0;
var b1y:Number=0;
var b1w:Number=120;
var b1h:Number=10;
var b2x:Number=120;
var b2y:Number=0;
var b2w:Number=120;
var b2h:Number=10;

var block1:MovieClip = this.createEmptyMovieClip("block1",this.getNextHighestDepth());
block1.lineStyle(4,0xff0000, 100, true, "none", "round","mitter",1);
drawRect(block1,b1x,b1y,b1w,b1h);

var block2:MovieClip = this.createEmptyMovieClip("block2",this.getNextHighestDepth());
block2.lineStyle(4,0x00ff00, 100, true, "none", "round","mitter",1);
drawRect(block2,b2x,b2y,b2w,b2h);

function drawRect(mc:MovieClip, px:Number, py:Number, w:Number, h:Number):MovieClip{
	mc.moveTo(px,py);
	mc.lineTo(px,py+h);
	mc.lineTo(px+w,py+h);
	mc.lineTo(px+w,py);
	mc.lineTo(px,py);
	return mc;
}

ball.onEnterFrame=function(){
	if(moveEnabled){
		this._x-=1;
		this._y-=2;
	}
	
	if(this._x>=b1x && this._x<b1x+b1w && this._y<b1y+b1h){
		block1._visible=false;
	}
	if(this._x>=b2x && this._x<b2x+b2w && this._y<b2y+b2w){
		block2._visible=false;
	}	
	
}

課題

物体の出現・消滅その2

attachMovieClip シンボルをasから登録することってできるの?