ゆっくりでピンボールとか


今回はゆっくりでピンボールです!
結構頑張りました!



ゆっくりピンボール


絵の提供者様
http://cieloeoceano.web.fc2.com/



HPがなくなると終了で、ゆっくりが落ちると大きく減ります。
さらに、いじめると少しずつ減ります。
スコア10000点以上目指して頑張ってね!

操作説明
スタート:Space
バーの操作:→、←キー

上手く表示出来ていない場合はブラウザの縦幅と横幅を調整してください



で、今回からはある程度ソースの解説を書いていきたいと思います。

まずは画像の扱いから
ちなみに私はつい一ヶ月半くらい前に知りました。


[Embed(source = "star.png")]
private static const StarImage:Class;
        

sourseで指定した画像を簡単に使えます。

例えばこんな風に

var starImage:Bitmap = new StarImage();  //Bitmap型に突っ込む
starImage.width = 50;                    //画像の横幅の指定  
starImage.height = 50;                   //画像の縦幅の指定
starImage.x = -starImage.width / 2;      //画像の中心座標の設定
starImage.y = -starImage.height / 2;     
            
//星の画像を表示するためのSpriteを作る
var sprite:Sprite = new Sprite();        //Spriteを作る
sprite.addChild(starImage);              //Spriteに画像を追加
addChild(sprite);                        //そのspriteを画面に追加


あと、Tweenerとか。これもしっかり理解して使い始めたのは最近かも。

Tweener.addTween(sprite, {
    time: 3, //3秒間かけて
    scaleX: 0, //消えるまで縮小
    scaleY: 0,
    alpha: 0, //透明にする
    x: dx,    //座標(dx, dy)まで移動 
    y: dy,  
    onComplete: function():void{  //以上の処理が終わるとこの関数を実行
    removeChild(sprite);
    }

});

ここのspriteを上の画像のところで宣言してあるやつにすると
画像が3秒間かけて目的地まで移動し、その間に消えていくという感じですね。




そして、最後に今回一番苦労したBox2Dのb2RevoluteJoint
簡単にいうとある点を中心に物体を回転させるためのものです。

jd = new b2RevoluteJointDef;

//引数の型は initialize(b2Body, b2Body, b2Vec2)
jd.Initialize(center_circle, circle, center_circle.GetPosition());  //center_circleとcircleをcenter_circleの中心で繋いでいます。
jd.enableMotor = true;    //モーターを使いますよっと、falseにすると使えません
jd.motorSpeed = 3;  //モーターを初期値3スピードで動かす
jd.maxMotorTorque = 10000000;  //この値が大きいと坂道に強くなるらしいです。実際よく分かってません
world.CreateJoint(jd) as b2RevoluteJoint;  //Jointの生成

これで陰陽球がくるくる回る処理を作っているわけです。


あと、歴代スコアTop5くらいは保存して表示してみようかと思ったのですがファイルの読み込みは出来るんですけど書き込みのやり方が調べても分からなかったです。また、あとでやってみます。

以下ソース
Pinball.as
ContactListener.as