ผลต่างระหว่างรุ่นของ "01219245/cocos2d-html5/Sprites"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 151: แถว 151:
  
 
=== Sprite class ===
 
=== Sprite class ===
 +
A sprite should inherit from '''<tt>cc.Sprite</tt>'''.  Create file '''<tt>src/Ship.js</tt>''' with this content:
 +
 +
<syntaxhighlight lang="javascript">
 +
var Ship = cc.Sprite.extend({
 +
    ctor: function() {
 +
        this._super();
 +
        this.initWithFile( 'images/ship.png' );
 +
    }
 +
});
 +
<syntaxhighlight>
 +
 +
The code says that a ship is just a sprite that  is initialized with our image.  We can create many Ship objects from this class.
  
 
== Moving sprites ==
 
== Moving sprites ==
  
 
== Keyboard inputs ==
 
== Keyboard inputs ==

รุ่นแก้ไขเมื่อ 14:29, 3 กุมภาพันธ์ 2557

This is part of 01219245.

In this tutorial, we will create a simple html5 program with Cocos2d-x.

In what follows, you should use Firefox as a browser. Chrome has stricter permission so if you want to view Cocos2d-html5 game, you'll have to install a web server software in your laptop.

Getting started

This tutorial is based on Cocos2d-html5 version 2.2.2, however, it should work for other versions as well.

Download the library Cocos2d-html5 from here.

Find a location for the library and unzip the library there. In that directory, it should look like this:

\- Cocos2d-html5-v2.2.2
   |- AUTHORS.txt
   |- CHANGELOG.txt
   |- cocos2d
   |- extensions
   |- external
   |- HelloHTML5World
   |- index.html
   |- lib
   |- licenses
   |- README.mdown
   |- samples
   |- template
   \- tools

Let's create directory mygames inside Cocos2d-html5-v2.x.x and we will put all our games there.

\- Cocos2d-html5-v2.2.2
   |- ..
   \- mygames

A Cocos2d-html5 application needs a few start-up codes. While Cocos2d-html5 provides template files for us, we shall use a slightly modified template instead. You can download it at 219245-template.zip.

To get started, download 219245-template.zip and unzip it into mygames. Rename directory 219245-template to tutorial1 and create a Git repository there.

Starting code

There are 3 main files for loading a Cocos2d-html5 game. In this section, we shall describe what should be in each file, and the changes we made from the original template.

File: index.html

This is the only HTML page for the game. It contains a canvas element where the game would draw on. Note that we can set the canvas size (which would be the game screen size) with the width and height attributes of this element.

<canvas id="gameCanvas" width="800" height="600"></canvas>

It also loads cocos2d.js script file.

File: cocos2d.js

This is the JavaScript file loaded in index.html. This module is responsible for loading other application files. Also, basic configuration of the framework is done here.

In the beginning of the code, there is an object with the framework parameters

    var c = {
        COCOS2D_DEBUG: 2, //0 to turn debug off, 1 for basic debug, and 2 for full debug
        box2d: false,
        chipmunk: false,
        showFPS: true,
        loadExtension: false,
        frameRate: 60,
        renderMode: 1,       //Choose of RenderMode: 0(default), 1(Canvas only), 2(WebGL only)
        tag: 'gameCanvas', //the dom element to run cocos2d on
        engineDir: '../../cocos2d/',
        //SingleEngineFile:'',
        appFiles:[
            'src/GameLayer.js'     //add your own files in order here
        ]
    };

A few interesting parameters:

  • engineDir: Since we put our program in mygames/tutorial1, the directory to the engine engineDir is set to ../../cocos2d.
  • appFiles: You should list all JavaScript files here. Currently, there is just one file src/GameLayer.js
  • showFPS: You can hide the frame rate display here.
  • frameRate: This is the default framerate.

File: main.js

This is the actual main program of our application. It defines class cocos2dApp which inherits from class cc.Application as:

var cocos2dApp = cc.Application.extend({
    config: document[ 'ccConfig' ],

    ctor: function( scene ) {
        this._super();
        // ..
    },

    applicationDidFinishLaunching: function() {
        // ..
    }
});

This is one pattern for writing class inheritance in JavaScript. It is introduced by John Resig, the creator of jQuery. In this pattern, you create an inherited class by calling method extend from the parent class passing an object with derived properties. Note that when writing a derived method, there is a special this._super that refers to the parent's method that you can call.

Both methods ctor (constructor) applicationDidFinishLaunching perform basic configuration and setup tasks. In the template that we provide we have trimmed down various configuration code and resource loading code.

At the end, the application is created with the start scene specified by class StartScene. This class is defined in file src/GameLayer.js.

var myApp = new cocos2dApp( StartScene );

Sample Game File: src/GameLayer.js

This is a sample game file. It defines the main GameLayer that would contains all our game objects. This class is a subclass of LayerColor. Class StartScene is also defined here. It is a scene that contains only the GameLayer object.

var GameLayer = cc.LayerColor.extend({
    init: function()
    {
        this._super( new cc.Color4B( 127, 127, 127, 255 ) );
        this.setPosition( new cc.Point( 0, 0 ) );

        this.scheduleUpdate();

        return true;
    }
});

var StartScene = cc.Scene.extend({
    onEnter: function() {
        this._super();
        var layer = new GameLayer();
        layer.init();
        this.addChild( layer );
    }
});

In our early games, we will mostly modify GameLayer to co-ordinate various game objects' behaviors.

Sprites

We will create the simplest game object. A sprite is a 2d graphics that is a unit for various game animation. In this section, we will learn how to create a sprite with no animation and show it on the screen.

Creating a sprite image file

Use a graphical software such as GIMP, Photoshop, Paint.NET to create a 64 pixel x 64 pixel image. Draw a simple spaceship whose head is in an upward direction. Make sure that the background is transparent.

Usually, when the image has transparent background, the graphic editor usually shows it like this:

219245-spaceship-sprite-transparent.png

If you background is not transparent, when you show the sprite you'll see it as an image in a white box.

We will create a directory images in tutorial1 for keeping all our image assets. Save the image as ship.png

Sprite class

A sprite should inherit from cc.Sprite. Create file src/Ship.js with this content:

<syntaxhighlight lang="javascript"> var Ship = cc.Sprite.extend({

   ctor: function() {
       this._super();
       this.initWithFile( 'images/ship.png' );
   }

}); <syntaxhighlight>

The code says that a ship is just a sprite that is initialized with our image. We can create many Ship objects from this class.

Moving sprites

Keyboard inputs