ActionScript2.0 ボール反転
2011.11.03
この記事は最終更新日から1年以上が経過しています。
前回のActionScript 簡単なイージングの続きになります。
前回ではball_mc._x>710の時、ボールの位置をx座標710pxで止めて下さい。
というscriptでした。
ActionScript2.0(おさらい)
var ball_mc:MovieClip; //オブジェクトの宣言 var speed = 0; //加速初期値 this.onEnterFrame = function(){ speed += 1; //加速値 ball_mc._x += speed; if (ball_mc._x > 710) { ball_mc._x = 710; delete this.onEnterFrame; } };
ではball_mc._x>710の時、ボールの進行方向を反転させましょう。
ActionScript2.0
var ball_mc:MovieClip; //オブジェクトの宣言 var speed = 0; //加速初期値 this.onEnterFrame = function(){ speed += 1; //加速値 if (ball_mc._x > 710) { speed = speed*-1; } ball_mc._x += speed;};
とspeed = speed*-1;という文を一文入れると反転可能です。
また、前回のままball_mc._x += speed;をif文の前に記述すると、
ボールがハマってしますので、if文の後に記述しましょう。
speed += 1; で加速が付いた分、壁にぶつかった時マイナスで反対方向にボールを進めます。
また、このままだとボールが半分はみ出て(ボールの中心が基準の為)から反転するようになってますので、
さらにscriptを記述します。
if (ball_mc._x > 710 - ball_mc._width/2){
ball_mc._width/2でボールの半径を取得し、その分引きます。
これで完成!
デモページ
また今度は左端がはみ出てしまうので、右側同様に左端のif文を追加します。
if (ball_mc._x<0 + ball_mc._width/2) { speed = speed*-1; }
はみ出なくはなりましたが、ボールとして不自然な動きなので、更に縦方向も考え、
ボールを作っていきたいと思います。