Webデザインの勉強と製作 | あかとんぼ

フェリカテクニカルアカデミーの学習をベースに、Webについての勉強と製作の過程をまとめています。

[Flash]⑫キーボード入力の判定 (2)

入力されたキーを調べる

f:id:akatonbo_web:20150609091008p:plain

var circle: MovieClip;a
var background: MovieClip;
var speed: Number = 8;

circle.onEnterFrame = moveCircle;

function moveCircle():Void
{
     if( Key.isDown( Key.LEFT ) )
          this._x -= speed;
     if( Key.isDown( Key.RIGHT ) )
          this._x += speed;
     if( Key.isDown( Key.UP ) )
          this._y -= speed;
     if( Key.isDown( Key.DOWN ) )
          this._y += speed;
    
     /* 背景の境界を計算する */
     var leftLimit = background._x;
     var topLimit = background._y;
     var rightLimit = background._x + background._width;
     var bottomLimit = background._y + background._height;
    
     /* 境界から外に出ていないか */
     if( this._x < leftLimit )
          this._x = leftLimit;
     if( this._y < topLimit )
          this._y = topLimit;
     if( this._x > rightLimit )
          this._x = rightLimit;
     if( this._y > bottomLimit )
          this._y = bottomLimit;   
}

スクリプト解説

Key.isDown
  • 一定時間ごとにキーが押されているか調べる
  • 指定したキーがおされているならtrue,いないならfalseを返す
  • this._y -= speed ▶ speedの分Y座標を移動させる
if( this._x < leftLimit )…枠を設定
  • 座標が背景の境界を出ないようにする
  • Limitを出ているなら座標をLimit内に固定する
ムービークリップの幅と高さを考慮するなら
/* 幅と高さの半分を取得 */
var w : Number = this._width / 2;
var h : Number = this._height / 2;

/* w,hの値だけ境界を内に縮める */
var bg : MovieClip = background;
var leftLimit = bg._x + w;
var topLimit = bg._y + h;
var rightLimit = bg._x + bg._width - w;
var bottomLimit = bg._y + bg._height - h;