Crafty Game Engine - Elevator Action

by Kieran Dang

HTML

<script src="http://craftyjs.com/release/0.1/crafty-min.js"></script>
<h1>Elevator Action</h1>
<h3>User Arrows to Move; Space to Shoot ...</h3>

CSS

body, html { margin:0; padding:0; overflow:hidden }

JavaScript

/**
* Elevator Action
* Crafty JS
*/



Crafty.init(50, 600, 400); //start the game with 50FPS and 600 x 400 stage

Crafty.canvas();

//Initialize the sprite
Crafty.sprite(32, "http://craftyjs.com/demos/elevatoraction/images/sprite.png", {
    player: [1,2,1,2],
    door: [0,2,1,2],
    reddoor: [0,0,1,2],
    light: [6,0,1,1]
});

//initialize sounds
Crafty.audio.add({"shoot": "http://craftyjs.com/demos/elevatoraction/sounds/shoot.wav", 
                  "quake": "http://craftyjs.com/demos/elevatoraction/sounds/quake.wav",
                  "spark": "http://craftyjs.com/demos/elevatoraction/sounds/spark.mp3"})
            .settings({volume: 0.2});

//create the bullet component
Crafty.c("bullet", {
    bullet: function(dir) {
        this.bind("enterframe", function() {
            this.move(dir, 15);
            if(this.x > Crafty.viewport.width || this.x < 0) 
                this.destroy();
        });
        return this;
    }
});

Crafty.scene("title", function() {
    Crafty.background("#111");
    
    Crafty.sprite("http://craftyjs.com/demos/elevatoraction/images/title.png", {
        title: [0,0, 430, 396]
    })
    Crafty.e("2D, DOM, title").attr({x: Crafty.viewport.width / 2 - 215});
    Crafty.e("2D, DOM, mouse").attr({x: Crafty.viewport.width / 2 - 75, y: 290, w: 142, h: 74}).bind("click", function(e) {
        Crafty.scene("main");
    });
});



Crafty.scene("main", function() {
    Crafty.background("#b1c7b5");
    //Create the player
    var player = Crafty.e("2D, player, DOM, gravity, controls, twoway, collision, animate, audio, health");
    player.attr({"y":1, z: 30, facingRight: true}).gravity("floor").twoway(3)
    .bind("keydown", function(e) {
        if(e.keyCode === Crafty.keys.SP) {
            if(!this.shoot) {
                this.shoot = true;
                this.delay(function() {
                    this.shoot = false;
                }, 100);
                
                this.stop();
               ...