反転の考え方
(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)ステージの右端まで移動したら~をする
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)
- 否定(NOT)はオペランドのブール値を反転する論理演算です。
- ブールは true また flase の2値で表されるデータ型です。
- 論理積(AND)は2つのオペランドの値がともに true のときに true、それ以外のときには false を返す論理演算です。
- 論理和(OR)は2つのオペランドの値のどちらか、または両方とも true のときに true、それ以外のときには false を返す論理演算です。
【練習3】
onClipEvent (load) {
var speedX:Number = 10;
var speedY:Number = 10;
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;
}
左右の向きを反転
onClipEvent (load) {
var speedX:Number = 6;
var speedY:Number = 6;
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;
}