enchant.jsとtmlib.jsを使ったゲーム作成フレームワーク「enforce」システム関数／メソッド

# システムで用意されている関数／メソッド

## 関数

<dl>
  <dt>debugwrite(array)</dt><dd>デバッグモード時に生成されるデバッグ用テキストラベルにテキストを表示します。<br>「<strong>clear</strong>」パラメータに<strong>true</strong>を設定していると一旦消去されます。<br>それ以外は追記になります。</dd>
  <dt>引数</dt><dd><strong>array</strong><br>デバッグ用テキストラベルに表示するテキストの情報を連想配列で渡す<br>
  <strong>clear</strong>：デバッグ用テキストラベルを一旦消去してから表示する<br>
  <strong>labeltext</strong>：表示／追記するテキストデータ<br>
  <strong>fontsize</strong>：表示するテキストのサイズ<br>
  <strong>fontcolor</strong>：表示するテキストの色（HTMLの色指定と同じ方法で指定）<br>
  </dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>rand(num)</dt><dd>乱数を取得する。<br>
  <dt>引数</dt><dd><strong>num</strong><br>乱数の最大値。</dd>
  <dt>返値</dt><dd><strong>int</strong><br>0〜numまでの範囲の乱数を返します。</dd>
</dl>
---
<dl>
  <dt>JSLog(string, num...)</dt><dd>デバッグモード時に、JavaScriptコンソールにデバッグライトを出力します。</dd>
  <dt>引数</dt><dd><strong>str</strong><br>この関数はデバッグモード時だけ機能します。<br>出力する文字列のフォーマットを指定します。<br>第二引数以降で指定するデータの数だけ「%@」を含めます。<br>【例】JSLog("hoge=%@, foo=%@, bar=%@", hoge, foo, bar)<br>この例ですと、最初の「%@」に変数「hoge」の値が、二番目の「%@」に変数「foo」の値が、三番目の「%@」に変数「bar」の値が置換されて、コンソールに出力されます。<br>hogeが4、fooが5、barが6の状態で上記の出力をすると、<br><br>hoge=4, foo=5, bar=6<br><br>というテキストがコンソールに出力されます。<br>JSLog(hoge)<br>とやると、console.log()の代わりになります。</dd>
  <dd><strong>num...</strong><br>第一引数に含まれる「%@」の数だけ、置換するデータを羅列します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>sprintf(string, num...)</dt><dd>JSLog()と同じ書式のデータをコンソールに出力するのではなく、関数の返値として返します。<br>C言語のsprintfのような複雑な整形は出来ないので注意。<br>
  <dt>引数</dt><dd><strong>string</strong><br>JSLog()と同じ書式で文字列を渡します。</dd>
  <dd><strong>num...</strong><br>第一引数に含まれる「%@」の数だけ、置換するデータを羅列</dd>
  <dt>返値</dt><dd><strong>string</strong><br>整形されたテキストデータが返されます。</dd>
</dl>
---
<dl>
  <dt>getBounds()</dt><dd>ブラウザの表示領域のサイズを返します。<br>
  <dt>引数</dt><dd><strong>無し</strong></dd>
  <dt>返値</dt><dd><strong>array</strong><br>配列の要素番号0にブラウザの横幅、要素番号1にブラウザの高さが入っています。</dd>
</dl>
---
<dl>
  <dt>setCookie(string, string2, num)</dt><dd>クッキーに値を保存する。<br>
  <dt>引数</dt><dd><strong>string</strong><br>クッキー名。</dd>
  <dd><strong>string2</strong><br>クッキーに保存するデータ。</dd>
  <dd><strong>num</strong><br>クッキーが破棄されるまでの日数。<br>省略すると1（日）。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>getCookie(string)</dt><dd>指定したクッキー名のデータを返す。<br>
  <dt>引数</dt><dd><strong>string</strong><br>取得したいデータのクッキー名。</dd>
  <dt>返値</dt><dd><strong>string</strong><br>指定したクッキーに設定されていた値。</dd>
</dl>
---
<dl>
  <dt>nop()</dt><dd>なにもしない。<br>CoffeeScriptではif文やfor文、switch文のwhenなどを空にすることが出来ないため、ゲーム作成中に一旦空にしておきたい場合に記述しておきます。<br>
  <dt>引数</dt><dd><strong>無し</strong></dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>addObject(array, object)</dt><dd>新しくオブジェクトを生成する。</dd>
    <dt>引数</dt><dd><strong>array</strong><br>連想配列（オブジェクト）で下記の中から必要なものを設定する。<br>
    <blockquote>    
      <strong>【共通】</strong><br>
      motionObj<br>
          動きを定義したクラス名<br>
      type<br>
          オブジェクトの種類<br>
      x<br>
          オブジェクトのx座標<br>
      y<br>
          オブジェクトのy座標<br>
      z<br>
          オブジェクトのz座標<br>
      xs<br>
          オブジェクトのx方向移動量<br>
      ys<br>
          オブジェクトのy方向移動量<br>
      zs<br>
          オブジェクトのz方向移動量<br>
      gravity<br>
          オブジェクトにかかる重力値<br>
      image<br>
          アニメーションに使う画像<br>
      width<br>
          表示サイズ幅(px)<br>
      height<br>
          表示サイズ縦(px)<br>
      opacity<br>
          透明度(0.0〜1.0)<br>
      animlist<br>
          アニメーション設定<br>
      animnum<br>
          初期表示アニメーション番号<br>
      visible<br>
          初期表示／非表示設定<br>
      scene<br>
          スプライトを表示するシーン<br>
      scaleX<br>
          x方向拡大率(1.0で等倍)<br>
      scaleY<br>
          y方向拡大率(1.0で等倍)<br>
      scaleZ<br>
          z方向拡大率(現在未使用)<br>
      rotation<br>
          回転角度<br>
      active<br>
      touchEnabled<br>
      <br>
      <strong>【Label】</strong><br>
      labeltext<br>
      textalign<br>
      fontsize<br>
      <br>
      <strong>【物理演算スプライト】</strong><br>
      rigid<br>
      density<br>
      friction<br>
      restitution<br>
      <br>
      <strong>【WebGLオブジェクト】</strong><br>
      model<br>
      kind<br>
      size<br>
      depth<br>
      radius<br>
      radius2<br>
      texture<br>          
      color<br>
    </blockquote>
    <strong>object</strong><br>@parentに設定するオブジェクト。<br>省略すると@parentにはundefinedが設定されます。
  </dd>
  <dt>返値</dt><dd><strong>object</strong><br>生成したオブジェクトを返します。</dd>
</dl>
---
<dl>
  <dt>removeObject(object)</dt><dd>指定したオブジェクトを削除します。</dd>
  <dt>引数</dt><dd><strong>object</strong><br>削除したいオブジェクトを渡します。<br>スプライトも削除されるので画面からも消えます。
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dd>
</dl>
---
<dl>
  <dt>playSound(string)</dt><dd>サウンドを再生します。</dd>
  <dt>引数</dt><dd><strong>string</strong><br>MEDIALISTでプリロード指定したキーを指定します。</dd>
  <dt>返値</dt><dd><strong>object</strong><br>サウンドオブジェクトが返されます。<br>このオブジェクトは再生しているサウンドを、停止・一時停止・再開させるのに使用します。</dd>
</dl>
---
<dl>
  <dt>pauseSound(string)</dt><dd>サウンドを一時停止させます。</dd>
  <dt>引数</dt><dd><strong>object</strong><br>指定したサウンドオブジェクトを一時停止させます。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>resumeSound(string)</dt><dd>サウンド再生を再開させます。</dd>
  <dt>引数</dt><dd><strong>object</strong><br>指定したサウンドオブジェクトでの再生を再開させます。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>stopSound(string)</dt><dd>サウンドを停止させます。</dd>
  <dt>引数</dt><dd><strong>object</strong><br>指定したサウンドオブジェクトでの再生を停止させます。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---

## オブジェクトが持つメソッド

<dl>
  <dt>@nextjob()</dt><dd>動きの定義で使用する「@_processnumber」をインクリメントします。</dd>
  <dt>引数</dt><dd><strong>無し</strong></dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@waitjob(num)</dt><dd>指定した秒数後に動きの定義で使用する「@_processnumber」をインクリメントさせます。</dd>
  <dt>引数</dt><dd><strong>num</strong><br>プロセスナンバーをインクリメントするまでの秒数(float)を指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@setProcessNumber(num)</dt><dd>「@_processnumber」に指定した数を設定します。</dd>
  <dt>引数</dt><dd><strong>num</strong><br>プロセスナンバーに設定する数を指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@isWithin(object, distance) <font color="red">※enchant.jsのみ</font></dt><dd>指定したオブジェクト（スプライト）との距離判定を行います。<br>distanceは省略可能で、省略した場合は「スプライトの幅/2」の距離以下だった場合はtrueと判定されます。</dd>
  <dt>引数</dt><dd><strong>object</strong><br>距離判定を行うオブジェクトを指定します。</dd>
  <dd><strong>distance</strong><br>スプライトの中心同士がどれくらいの距離になったらtrueと判定するかの値を指定します。</dd>
  <dt>返値</dt><dd><strong>bool</strong><br>指定したオブジェクトのスプライト中心点と自分自身のスプライトの中心点の距離が指定した値以下であったらtrue、そうでなければfalseが返ります。</dd>
</dl>
---
<dl>
  <dt>@isIntersect(object)</dt><dd>指定したオブジェクト（スプライト）との衝突判定を行います。</dd>
  <dt>引数</dt><dd><strong>object</strong><br>衝突判定を行うオブジェクトを指定します。</dd>
  <dt>返値</dt><dd><strong>bool</strong><br>指定したオブジェクトのスプライトと、自分自身のスプライトが重なっていた場合はtrue、そうでなければfalseが返ります。<br>重なり判定は矩形で行われるためスプライトの絵柄は一切関係ありません。<br>colliderが設定されていた場合は、colliderに設定されているスプライトとの衝突判定が行われます。</dd>
</dl>
---
<dl>
  <dt>@setAnimationToRemove(num)</dt><dd>指定したアニメーション番号のアニメーションを一回だけ表示し自分自身を削除します。</dd>
  <dt>引数</dt><dd><strong>num</strong><br>表示するアニメーション番号を指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@setAnimationToOnce(num1, num2)</dt><dd>アニメーション番号「num1」のアニメーションを一回だけ表示し、アニメーション番号を「num2」に変更します。</dd>
  <dt>引数</dt><dd><strong>num1</strong><br>1回だけ表示するアニメーション番号を指定します。</dd>
  <dd><strong>num2</strong><br>num1を一回だけ表示した後に設定するアニメーション番号を指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@setModel(string)</dt><dd>3DスプライトにColladaモデルを設定します。</dd>
  <dt>引数</dt><dd><strong>string</strong><br>MEDIALISTでプリロード指定したキーで、Colladaモデルを指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@addTarget(func)</dt><dd>スマートフォンなどでスプライトがタップされるか、マウスでクリックされた時の処理を指定します。</dd>
  <dt>引数</dt><dd><strong>func</strong><br>スプライトがタップかクリックのアクションを受け取った時に実行される関数（無名関数も可）を指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>
---
<dl>
  <dt>@spriteRotation(num)</dt><dd>2Dスプライトを回転させます。</dd>
  <dt>引数</dt><dd><strong>num</strong><br>2Dスプライトを回転させる角度（DEGREE）を指定します。</dd>
  <dt>返値</dt><dd><strong>無し</strong></dd>
</dl>

---

[enforceチュートリアル一覧](http://qiita.com/digitarhythm/items/9e75c871f5ce582a4d01)