[AS3] flixelでカスタムポーズ画面を出す

2010/11/12

こんにちは。きんくまです。
最近は半分ほどObjective-CでOpenGLESについてやっております。
なかなか難しいですね。

さて、ブログのコメントで質問がありましたので、それについて調べてみました。

えーと、flixelでカスタマイズしたポーズ画面をつくりたいとのことでした。
どうやら以前私が記事を書いたときからバージョンがあがったみたいで、少し勝手が違っているみたいです。

というわけで最新版を調べた結果、

1.FlxGroupを継承したクラスをつくり、それをポーズ画面とする
2.FlxGameを敬称したメインクラスからthis.pause = new OriginalPause();などとして登録してあげるとOK

ということみたいです。うまくいくとこんな感じになりました。

pause101119

左側のアイコンは右側のを流用しちゃっています。この辺は自分でオリジナルアイコンを作って登録しないと
いけないみたいですね。以前のマウスとかのアイコンはどこにいっちゃったんでしょ?

ソース一式はここにおいておきます。

メイン

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import org.flixel.FlxGame;
    import org.flixel.FlxState;
     
    /**
     * ...
     * @author KinkumaDesign
     */
     
    public class Main extends FlxGame
    {
         
        public function Main():void
        {
            super(320, 240, PlayState, 2);
            FlxState.bgColor = 0x2D4779;
            this.pause = new OriginalPause();
        }      
    }
     
}

■OriginalPause
これの途中部分はorg.flixel.data.FlxPauseのコンストラクタ部分からひっぱってきています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package 
{
    import org.flixel.FlxG;
    import org.flixel.FlxGroup;
    import org.flixel.FlxObject;
    import org.flixel.FlxSprite;
    import org.flixel.FlxText;
    /**
     * ...
     * @author KinkumaDesign
     */
    public class OriginalPause extends FlxGroup
    {
        [Embed(source="org/flixel/data/key_minus.png")] private var ImgKeyMinus:Class;
        [Embed(source="org/flixel/data/key_plus.png")] private var ImgKeyPlus:Class;
        [Embed(source="org/flixel/data/key_0.png")] private var ImgKey0:Class;
        [Embed(source = "org/flixel/data/key_p.png")] private var ImgKeyP:Class;
         
        public function OriginalPause()
        {
            super();
            scrollFactor.x = 0;
            scrollFactor.y = 0;
            var w:uint = 160;
            var h:uint = 100;
            x = (FlxG.width-w)/2;
            y = (FlxG.height-h)/2;
            add((new FlxSprite()).createGraphic(w,h,0xaa000000,true),true);        
            (add(new FlxText(0,0,w,"this game is"),true) as FlxText).alignment = "center";
            add((new FlxText(0, 10, w, "PAUSED")).setFormat(null, 16, 0xffffff, "center"), true);
             
            add(new FlxSprite(4,36,ImgKeyP),true);
            add(new FlxText(16,36,w-16,"A Button"),true);
            add(new FlxSprite(4,50,ImgKey0),true);
            add(new FlxText(16,50,w-16,"B Button"),true);
            add(new FlxSprite(4,64,ImgKeyMinus),true);
            add(new FlxText(16,64,w-16,"Mouse"),true);
            add(new FlxSprite(4,78,ImgKeyPlus),true);
            add(new FlxText(16,78,w-16,"Move"),true);
             
            var offsetX:uint = 80;
            add(new FlxSprite(4 + offsetX,36,ImgKeyP),true);
            add(new FlxText(16 + offsetX,36,w-16,"Pause Game"),true);
            add(new FlxSprite(4 + offsetX,50,ImgKey0),true);
            add(new FlxText(16 + offsetX,50,w-16,"Mute Sound"),true);
            add(new FlxSprite(4 + offsetX,64,ImgKeyMinus),true);
            add(new FlxText(16 + offsetX,64,w-16,"Sound Down"),true);
            add(new FlxSprite(4 + offsetX,78,ImgKeyPlus),true);
            add(new FlxText(16 + offsetX,78,w-16,"Sound Up"),true);
        }
         
    }
 
}
LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

LINEスタンプ作りました!
毎日使える。とぼけたウサギ。LINEスタンプ販売中! 毎日使える。とぼけたウサギ

ページトップへ戻る