こんにちは。きんくまです。
「沈まぬ太陽」観てみたいです。
さて、今回は画面遷移をしてみようです。
>> 今回できたものはこちらです。
flixelのロゴが出て
スタートボタンがあって
おすとwelcomeの文字がでる
まずプロジェクトを作ったら、前回解凍してできたファイルのうち、
\com\adamatomic\flixel以下を
プロジェクトファイルのsrc以下にコピーしておきます。
それでMain.asはFlxGameを継承しておきます。
package { import com.adamatomic.flixel.FlxGame; [SWF(width="640", height="480", backgroundColor="#000000")] public class Main extends FlxGame { public function Main():void { super(320, 240, MenuState, 2, 0xFF000000, true, 0xFFD7FCFF); } } }
FlxGameはゲームの大枠の初期設定をします。
superの中身
function FlxGame (GameSizeX : uint, GameSizeY : uint, InitialState : Class, Zoom : uint, BGColor : Number, ShowFlixelLogo : Boolean, FlixelColor : Number, FlixelSound : Class, Frame : Class, ScreenOffsetX : uint, ScreenOffsetY : uint) :
よくわからないプロパティもあるので、必要な部分だけ解説
GameSizeX: uint … ゲーム画面の横幅ピクセル数
GameSizeY: uint … ゲーム画面の縦幅ピクセル数
InitialState: Class … 最初に遷移するFlxStateのクラス名
Zoom: uint … ピクセルを何倍するか?たとえば2とすると、実際の画面では1pxが2pxとして表示される。
BGColor: Number … Flashの背景色(ARGB)
ShowFlixelLogo: Boolean … flixelのロゴを一番最初に表示させるか
FlixelColor: Number … 上記で表示させる場合、その色の設定(ARGB)
という感じ。これはあんまり重要じゃないんで次にいきます。
画面遷移
flixelはFlxStateというものを継承したクラスをきりかえてゲーム画面を変更します。
たとえば、メニュー画面、プレイ画面、エンディング画面など。
FlxStateはDisplayObjectContainerのようなもので、そこにいろいろなものを吊るして表示していきます。
SpriteとかButtonとかTextとかはflixelの方で拡張したものです。
さきほどFlxGameの引数に一番最初に表示するFlxStateを設定するところがありました。
今回はMenuStateというクラスを作ってみます。
package { import com.adamatomic.flixel.*; public class MenuState extends FlxState { [Embed(source = 'data/finger.png')] private var Finger:Class; private var startButton:FlxButton; public function MenuState() { var bg:FlxSprite = new FlxSprite(null, 0, 0, false, false, 100, 20, 0xff39827E); var bgov:FlxSprite = new FlxSprite(null, 0, 0, false, false, 100, 20, 0xff82C8C5); var text:FlxText = new FlxText(0, 4, 100, 20, "PRESS START", 0xffffff, null, 8, "center"); startButton = new FlxButton((FlxG.width - 100) / 2, (FlxG.height - 20) / 2, bg, startGame, bgov, text); add(startButton); FlxG.setCursor(Finger); } private function startGame():void { FlxG.switchState(PlayState); } } }
それで、ここで各クラスの解説をしようと思ったのですが、力尽きそうなので本家のdocを読んでください。
flixel documentation
この解説はダウンロードしたファイルたちの中にも入っていて、
nanodoc.htmlを開くと見ることができます。
わからなそうなところだけ。
■
[Embed(source = ‘data/finger.png’)] private var Finger:Class;
これは、finger.pngという画像を埋め込んでいます。
それを
FlxG.setCursor(Finger);
というところで使っています。
FlxGはユーティリティ全般で利用するクラスで、ボタンを押したかどうかの判定や音を鳴らしたり、自動当たり判定なんかにも使われます。
で、今回はマウスカーソルを埋め込んだ画像にさしかえています。
■
add(startButton);
これで、この部分のちょくぜんにつくったFlxButtonを画面表示に吊るして追加してます。
■
FlxG.switchState(PlayState);
ここが一番重要なところで、PlayStateという別画面へ遷移する命令です。
遷移先
package { import com.adamatomic.flixel.*; public class PlayState extends FlxState { private var text:FlxText; public function PlayState() { text = new FlxText((FlxG.width - 300) / 2, 60, 300, 200, "Welcome to \nflixel world!", 0x44C4C0, null, 32, "center"); add(text); } } }
遷移先はただFlxTextをいれただけです。
まとめ
・FlxStateに各表示クラスを吊るしていく。
・各表示クラスはflixelの方で拡張したSpriteだったり、Textだったりする。
・FlxGを使って、各画面を遷移させる。
強引にまとめてみました。
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ