読者です 読者をやめる 読者になる 読者になる

ハロトレWebデザインの勉強 | 求職者支援訓練Webサイト制作科 フェリカテクニカルアカデミー

未経験者からプロになるハロートレーニングWebデザインの勉強

ボタンで制御

ボタンからムービークリップを動かす

  • ボタンアクション
  • ボタンに直接記述可能ですが、それをせずにイベントハンドラメソッドで記述する
間違った記述
  • ボタンに動きのみを記述する
on (release) {
	this._rotation += 10;
}


この記述では、ステージ全体が回転します。

ボタンのインスタンス名とムービークリップインスタンス
var moveR:Number = 5;

rotation_btn.onRelease = function() {
	kuma_mc._rotation += moveR;
}


ユーザー定義関数の場合

var moveR:Number = 5;

rotation_btn.onRelease = kumaAngle;
	function kumaAngle():Void {
	kuma_mc._rotation += moveR;
}

ボタンを押すとムービーが再生する

  • 再生ヘッドは、フレームを読むだけ
  • onEnterFrameは、フレーム内のActionScriptの処理を実行するだけ
  • お互いに影響を与えないため、1フレームですべてを命令することはできません(if文とdeleteを組み合わせれば可能です)
お互いを分離します
  • 1フレームには、ステージの時間を止めるだけの役割
  • 2フレームには、onEnterFrameのActionScriptの記述をします



《1フレームに記述》

this.onLoad = function() {
  this.stop();
}
this.start_btn.onRelease = function() {
  gotoAndStop(2);
}


《2フレームに記述》

var moveX:Number = 5;
var moveY:Number = 5;
var rightEdge:Number = 550;
var leftEdge:Number = 0;
var topEdge:Number = 0;
var bottomEdge:Number = 400;
var w:Number = kuma_mc._width/2;
var h:Number = kuma_mc._height/2;

this.onEnterFrame = function() {
  if( kuma_mc._x > rightEdge - w || kuma_mc._x < leftEdge + w ) {
    moveX *= -1;
  }
  kuma_mc._x += moveX;
	
  if( kuma_mc._y > bottomEdge - h || kuma_mc._y < topEdge + h ) {
    moveY *= -1;
  }
  kuma_mc._y += moveY;
}
onEnterFrameの問題点
  • 無限ループと同様、再生を永久に繰り返す命令になっています


再生を停止してスタート時に戻る

  • 最初の画面に戻る
  • 画面全体の透明停止ボタンを作成(ヒットにのみキーフレーム)
  • Buttonレイヤーの「2フレーム」に配置する
  • 2フレームのActionに以下を追記する
this.stop_btn.onRelease = function() {
  gotoAndStop(1);
}

ボタンがクリックされるたびに移動するムービークリップ

var lemon_mc:MovieClip;
var top_btn:Button;
var right_btn:Button;
var bottom_btn:Button;
var left_btn:Button;
var moveXY:Number = 20;

top_btn.onRelease = function() {
	lemon_mc._y -= moveXY;
}
right_btn.onRelease = function() {
	lemon_mc._x += moveXY;
}
bottom_btn.onRelease = function() {
	lemon_mc._y += moveXY;
}
left_btn.onRelease = function() {
	lemon_mc._x -= moveXY;
}
端になったら反対方向の端からでてきて繰り返す
var lemon_mc:MovieClip;
var top_btn:Button;
var right_btn:Button;
var bottom_btn:Button;
var left_btn:Button;
var moveXY:Number = 20;
var w:Number = lemon_mc._width/2;
var h:Number = lemon_mc._height/2;
var topEdge:Number = 0;
var rightEdge:Number = 500;
var bottomEdge:Number = 300;
var leftEdge:Number = 0;

top_btn.onRelease = function() {
	if(lemon_mc._y < topEdge - h) {
		lemon_mc._y = (bottomEdge + h);
	}
	lemon_mc._y -= moveXY;
}

right_btn.onRelease = function() {
	if(lemon_mc._x > rightEdge + w) {
	  lemon_mc._x = (leftEdge - w);
	}
	lemon_mc._x += moveXY;
}
bottom_btn.onRelease = function() {
	if(lemon_mc._y > bottomEdge + h) {
		lemon_mc._y = (topEdge - h);
	}
	lemon_mc._y += moveXY;
}
left_btn.onRelease = function() {
	if(lemon_mc._x < leftEdge - w) {
	  lemon_mc._x = (rightEdge + w);
	}
	lemon_mc._x -= moveXY;
}

ボタンを押し続けると動く、離すと止まる

  • 再生ヘッドがフレームを読むたびに(onEnterFrame)