テンプレートプロジェクトについて の変更点


[[FrontPage]]

* テンプレートプロジェクトについて [#x2ad6bee]
ここでは`flixel tpl`によって作られるプロジェクトについて説明をします

----
#contents
----

* 作成されるファイルについて [#ic5d1abf]

 ProjectName
   +-- Project.xml
   +-- ProjectName.hxproj(FlashDevelopをテンプレートにした場合)
   +-- ProjectName.iml(IntelliJ IDEAをテンプレートにした場合)
   +-- .idea(IntelliJ IDEAをテンプレートにした場合)
   +-- ProjectName.sublime-project(Sublime Textをテンプレートにした場合)
   +-- build.hxml(Sublime Textをテンプレートにした場合)
   +-- assets
   |     +-- data
   |     +-- images
   |     +-- music
   |     +-- sounds
   |
   +-- sources
         +-- AssetPaths.hx
         +-- Main.hx
         +-- MenuState.hx
         +-- PlayState.hx
         +-- Reg.hx
 
----

** ルート直下に生成されるファイルについて [#m4e6f53f]
`Project.xml`(プロジェクト設定ファイル)以外は選択したテンプレートによって異なります。ただIntellij IDEA以外の環境は分からないので勘で書いています。`assets`フォルダは画像やサウンドデータを配置するフォルダ。`sources`はソースコードを配置するフォルダとなります。
----

** ソースコードについて [#j1f417b4]
自動生成される5つのファイルについて、簡単に説明すると以下のようになります。

- AssetPaths.hx : アセットのパス定義
- Main.hx : ゲーム起動設定
- MenuState.hx : メニュー用State
- PlayState.hx : ゲーム用State
- Reg.hx : 常駐する変数やオブジェクトの管理

----

*** AssetPaths.hxについて [#z573f80c]
TODO:
「assets」フォルダ以下にあるデータのファイルを、自動でフィールドに追加します。
例えば、「assets/images/player.png」が存在する場合、以下の指定でロードが可能です。

#geshi(ActionScript){{
  var spr = new FlxSprite(0, 0, Assets.player__png);
}}

また「assets/data/autotiles.png」が存在すれば以下の指定で読み込めます。
#geshi(ActionScript){{
  var csv:String; // マップのCSV
  var map = new FlxTilemap();
  map.loadMap(csv, AssetPaths.autotiles__png, 0, 0, FlxTilemap.AUTO);
}}

要は、「assets」以下のファイルを ''ファイル名__拡張子''で楽にアクセスするためのモジュールです

----

*** Main.hxについて [#cdb049b0]
Main.hxは、おそらく一番最初に編集すべきファイルとなります。理由は画面サイズやフレームレート、起動時のロゴのスキップを有効にしないとゲームが作れないためです。

編集の例としては以下のようになります。
#geshi(Actionscript){{
/// Main.hx
class Main extends Sprite {
    var gameWidth:Int = 320; // 画面の幅
    var gameHeight:Int = 240; // 画面の高さ
    var initialState:Class<FlxState> = PlayState; // 最初の画面
    var zoom:Float = -1; // -1の場合、自動でズームを行う
    var framerate:Int = 60; // フレームレート
    var skipSplash:Bool = true; // 起動時のスプラッシュ表示をスキップする
    var startFullscreen:Bool = false; // フルスクリーン描画を行うかどうか
}}

----

*** MenuState.hxについて [#k6704a10]
初期設定では MenuState へ遷移するようになっているので、おそらくタイトル画面用のStateかと思います。ただゲームを作る場合は、まずメインゲームから作るのが普通なので、しばらくは不要となります。

----

*** PlayState.hxについて [#qd41c39d]
メインゲームをここに記述します。方針としては、

- create() : FlxSpriteやFlxTextなどのインスタンス生成、レベルのロードなどを行う
- update() : キー入力や衝突判定、ステージクリアやゲームオーバー判定を行う
- destroy() : 生成したインスタンスやリソースの破棄

となります。

----

*** Reg.hxについて [#g411e9f5]
Stateが遷移しても保持し続ける変数やインスタンスをここに定義します。例えば、ゲームスコアやレベルなどです。共通するメソッドをここに記述するのもアリです。