2014-12-22

2014-12-22

if文を使った反転Add Star

 

 

反転の考え方

(1)右に移動

  • 右端までは移動速度が代入され続け、右に移動します

 onClipEvent (load) {
	var speed:Number = 10; //移動速度
 }

 onClipEvent (enterFrame) {
	_x += speed;
 }


(2)ステージの右端まで移動

  • 右端のX座標を指定
  • 右端のX座標を上回ったら(条件)

  onClipEvent (load) {
	var speed:Number = 10; //移動速度
	var rightEdge:Number = 500; //右端の座標
  }

  onClipEvent (enterFrame) {
	_x += speed;
	if (_x > rightEdge) {
	}
  }


(3)ステージの右端まで移動したら~をする

  • 右端のX座標を上回ったら、マイナス値を代入

  onClipEvent (load) {
	var speed:Number = 10; //移動速度
	var rightEdge:Number = 500; //右端の座標
  }

  onClipEvent (enterFrame) {
	_x += speed;
	if (_x > rightEdge) {
		_x -= speed;
	}
  }

この時点でのプレビューは、反転しません。

条件式が正しい記述ではないからです。



(4)条件式を整える


  onClipEvent (load) {
	var speed:Number = 10; //移動速度
	var rightEdge:Number = 500; //右端の座標
  }

  onClipEvent (enterFrame) {
	if (_x > rightEdge) {
		_x -= speed;
	} else {
		_x += speed;
	}
  }

しかし、この記述でも戻ってきません。

X座標に代入する式を変えるだけでは、再生ヘッドが読まれた瞬間に「右に移動し左に移動」を繰り返してしまいます。

連続的に左に移動させるには、代入する値を「マイナス」になるように書き換えます。



(5)条件式を整える


  onClipEvent (load) {
	var speed:Number = 10; //移動速度
	var rightEdge:Number = 500; //右端の座標
  }

  onClipEvent (enterFrame) {
	if (_x > rightEdge) {
		speed *= -1;
	}
		_x += speed;
  }

これで反転はされましたが、左端でもそのまま移動してしまいます。



(6)左端の条件式も加える


  onClipEvent (load) {
	var speed:Number = 10; //移動速度
	var rightEdge:Number = 500; //右端の座標
	var leftEdge:Number = 0; //左端の座標
  }

  onClipEvent (enterFrame) {
	if (_x > rightEdge) {
		speed *= -1;
	}
	if (_x < leftEdge) {
		speed *= -1;
	}
		_x += speed;
  }


(7)論理和で条件式を整える


  onClipEvent (load) {
	var speed:Number = 10; //移動速度
	var rightEdge:Number = 500; //右端の座標
	var leftEdge:Number = 0; //左端の座標
  }

  onClipEvent (enterFrame) {
	if (_x > rightEdge || _x < leftEdge) {
		speed *= -1;
	}
		_x += speed;
  }


理論演算子

 

演算子処理内容オペランド
! 否定 (NOT) 単項
&& 論理積 (AND) 二項
|| 論理和 (OR) 二項

 


 

否定(NOT)

 

  • 否定(NOT)はオペランドのブール値を反転する論理演算です。
  • ブールは true また flase の2値で表されるデータ型です。

 

論理積 (AND)

 

  • 論理積(AND)は2つのオペランドの値がともに true のときに true、それ以外のときには false を返す論理演算です。

 

論理和 (OR)

 

  • 論理和(OR)は2つのオペランドの値のどちらか、または両方とも true のときに true、それ以外のときには false を返す論理演算です。



【練習3】

 

 
Gadgets powered by Google

 


  onClipEvent (load) {
	var speedX:Number = 10; //X座標移動速度
	var speedY:Number = 10; //Y座標移動速度
	var leftEdge:Number = 0; //左端の座標
	var rightEdge:Number = 500; //右端の座標
	var topEdge:Number = 0; //上端の座標
	var bottomEdge:Number = 300; //下端の座標
  }

  onClipEvent (enterFrame) {
	if (_x > rightEdge - _width/2 || _x < leftEdge + _width/2) {
		speedX *= -1;
	}
		_x += speedX;
		
	if (_y > bottomEdge - _height/2 || _y < topEdge + _height/2) {
		speedY *= -1;
	}
		_y += speedY;
  }

 

 
Gadgets powered by Google

 


 

左右の向きを反転

 

 

 

_xscale *= -1;

 

 

  onClipEvent (load) {
	var speedX:Number = 6; //X座標移動速度
	var speedY:Number = 6; //Y座標移動速度
	var leftEdge:Number = 0; //左端の座標
	var rightEdge:Number = 502; //右端の座標
	var topEdge:Number = 0; //上端の座標
	var bottomEdge:Number = 300; //下端の座標
  }

  onClipEvent (enterFrame) {
	if (_x > rightEdge - _width/2 || _x < leftEdge + _width/2) {
		speedX *= -1;
		_xscale *= -1;
	}
		_x += speedX;
		
	if (_y > bottomEdge - _height/2 || _y < topEdge + _height/2) {
		speedY *= -1;
	}
		_y += speedY;
  }