zoukankan      html  css  js  c++  java
  • html5游戏引擎-Pharse.js学习笔记(一)

    1.前言

      前几天随着flappy bird这样的小游戏的火爆,使我这种也曾了解过html5技术的js业余爱好者也开始关注游戏开发。研究过两个个比较成熟的html5游戏引擎,感觉用引擎还是要方便一些。所以决定从今天正式开始研究html5游戏引擎,并且将从看官网demo的学习整理成博客和大家一起分享。

      我了解过cocos-2d for html5和phaser.js这两个引擎,其中前者比较复杂,对于有过cocos-2d平台开发经验的人来说可能学习的较为容易一些,如果是纯入门汉又不想研究c++版本(因为c++版本的网上资料较多)的,感觉学习难度较大。而第二种则相对来说demo详细,虽然没有文档是一大遗憾,但是感觉相对还是比较容易,所以就作为自己的今天的学习方向了。。所不定以后哪一天要是开发出flappy bird这样的游戏,那就真的逆袭了。。。

      自己也是初学者,主要的学习方式就是去github的项目主页(https://github.com/photonstorm/phaser)下载demo进行学习,开发工具是装了aptana插件的eclipse for jee的最新版。

      好了,现在开始demo学习第一课。

    2.引入插件

      把src拷贝进项目就可以了,如果发布的话就用phaser.min.js一个文件就行了,

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta charset="UTF-8">
      5 <title>phaser demo</title>
      6 <!-- <script src="libs/jquery-2.0.3.min.js" type="text/javascript"></script> -->
      7 <!-- <script src="libs/purl.js" type="text/javascript"></script>
      8 <script src="libs/gamecontroller.js" type="text/javascript"></script> -->
      9          <!--
     10             If you're wondering why we embed each script separately, and not just the single-file phaser lib
     11             it's because it makes debugging *significantly* easier for us. Feel free to replace all the below
     12             with just a call to ../dist/phaser.js instead if you prefer.
     13         -->
     14         <script src="libs/phasersrc/Intro.js"></script>
     15         <script src="libs/phasersrc/pixi/Pixi.js"></script>
     16         <script src="libs/phasersrc/Phaser.js"></script>
     17         <script src="libs/phasersrc/utils/Utils.js"></script>
     18 
     19         <script src="libs/phasersrc/pixi/core/Matrix.js"></script>
     20         <script src="libs/phasersrc/pixi/core/Point.js"></script>
     21         <script src="libs/phasersrc/pixi/core/Rectangle.js"></script>
     22         <script src="libs/phasersrc/pixi/core/Polygon.js"></script>
     23 
     24         <script src="libs/phasersrc/pixi/display/DisplayObject.js"></script>
     25         <script src="libs/phasersrc/pixi/display/DisplayObjectContainer.js"></script>
     26         <script src="libs/phasersrc/pixi/display/Sprite.js"></script>
     27         <script src="libs/phasersrc/pixi/display/Stage.js"></script>
     28 
     29         <script src="libs/phasersrc/pixi/extras/CustomRenderable.js"></script>
     30         <script src="libs/phasersrc/pixi/extras/Strip.js"></script>
     31         <script src="libs/phasersrc/pixi/extras/Rope.js"></script>
     32         <script src="libs/phasersrc/pixi/extras/TilingSprite.js"></script>
     33 
     34         <script src="libs/phasersrc/pixi/filters/AbstractFilter.js"></script>
     35         <script src="libs/phasersrc/pixi/filters/FilterBlock.js"></script>
     36 
     37         <script src="libs/phasersrc/pixi/primitives/Graphics.js"></script>
     38 
     39         <script src="libs/phasersrc/pixi/renderers/canvas/CanvasGraphics.js"></script>
     40         <script src="libs/phasersrc/pixi/renderers/canvas/CanvasRenderer.js"></script>
     41 
     42         <script src="libs/phasersrc/pixi/renderers/webgl/PixiShader.js"></script>
     43         <script src="libs/phasersrc/pixi/renderers/webgl/PrimitiveShader.js"></script>
     44         <script src="libs/phasersrc/pixi/renderers/webgl/StripShader.js"></script>
     45         <script src="libs/phasersrc/pixi/renderers/webgl/WebGLBatch.js"></script>
     46         <script src="libs/phasersrc/pixi/renderers/webgl/WebGLFilterManager.js"></script>
     47         <script src="libs/phasersrc/pixi/renderers/webgl/WebGLGraphics.js"></script>
     48         <script src="libs/phasersrc/pixi/renderers/webgl/WebGLRenderer.js"></script>
     49         <script src="libs/phasersrc/pixi/renderers/webgl/WebGLRenderGroup.js"></script>
     50         <script src="libs/phasersrc/pixi/renderers/webgl/WebGLShaders.js"></script>
     51 
     52         <script src="libs/phasersrc/pixi/text/BitmapText.js"></script>
     53         <script src="libs/phasersrc/pixi/text/Text.js"></script>
     54 
     55         <script src="libs/phasersrc/pixi/textures/BaseTexture.js"></script>
     56         <script src="libs/phasersrc/pixi/textures/Texture.js"></script>
     57         <script src="libs/phasersrc/pixi/textures/RenderTexture.js"></script>
     58 
     59         <script src="libs/phasersrc/pixi/utils/EventTarget.js"></script>
     60         <script src="libs/phasersrc/pixi/utils/Polyk.js"></script>
     61 
     62         <script src="libs/phasersrc/core/Camera.js"></script>
     63         <script src="libs/phasersrc/core/State.js"></script>
     64         <script src="libs/phasersrc/core/StateManager.js"></script>
     65         <script src="libs/phasersrc/core/LinkedList.js"></script>
     66         <script src="libs/phasersrc/core/Signal.js"></script>
     67         <script src="libs/phasersrc/core/SignalBinding.js"></script>
     68         <script src="libs/phasersrc/core/Plugin.js"></script>
     69         <script src="libs/phasersrc/core/PluginManager.js"></script>
     70         <script src="libs/phasersrc/core/Stage.js"></script>
     71         <script src="libs/phasersrc/core/Filter.js"></script>
     72         <script src="libs/phasersrc/core/Group.js"></script>
     73         <script src="libs/phasersrc/core/World.js"></script>
     74         <script src="libs/phasersrc/core/Game.js"></script>
     75 
     76         <script src="libs/phasersrc/input/Input.js"></script>
     77         <script src="libs/phasersrc/input/Key.js"></script>
     78         <script src="libs/phasersrc/input/Keyboard.js"></script>
     79         <script src="libs/phasersrc/input/Mouse.js"></script>
     80         <script src="libs/phasersrc/input/MSPointer.js"></script>
     81         <script src="libs/phasersrc/input/Pointer.js"></script>
     82         <script src="libs/phasersrc/input/Touch.js"></script>
     83         <script src="libs/phasersrc/input/Gamepad.js"></script>
     84         <script src="libs/phasersrc/input/SinglePad.js"></script>
     85         <script src="libs/phasersrc/input/GamepadButton.js"></script>
     86         <script src="libs/phasersrc/input/InputHandler.js"></script>
     87 
     88         <script src="libs/phasersrc/gameobjects/Events.js"></script>
     89         <script src="libs/phasersrc/gameobjects/GameObjectFactory.js"></script>
     90         <script src="libs/phasersrc/gameobjects/BitmapData.js"></script>
     91         <script src="libs/phasersrc/gameobjects/Sprite.js"></script>
     92         <script src="libs/phasersrc/gameobjects/TileSprite.js"></script>
     93         <script src="libs/phasersrc/gameobjects/Text.js"></script>
     94         <script src="libs/phasersrc/gameobjects/BitmapText.js"></script>
     95         <script src="libs/phasersrc/gameobjects/Button.js"></script>
     96         <script src="libs/phasersrc/gameobjects/Graphics.js"></script>
     97         <script src="libs/phasersrc/gameobjects/RenderTexture.js"></script>
     98 
     99         <script src="libs/phasersrc/system/Canvas.js"></script>
    100         <script src="libs/phasersrc/system/StageScaleMode.js"></script>
    101         <script src="libs/phasersrc/system/Device.js"></script>
    102         <script src="libs/phasersrc/system/RequestAnimationFrame.js"></script>
    103 
    104         <script src="libs/phasersrc/math/RandomDataGenerator.js"></script>
    105         <script src="libs/phasersrc/math/Math.js"></script>
    106         <script src="libs/phasersrc/math/QuadTree.js"></script>
    107 
    108         <script src="libs/phasersrc/geom/Line.js"></script>
    109         <script src="libs/phasersrc/geom/Circle.js"></script>
    110         <script src="libs/phasersrc/geom/Point.js"></script>
    111         <script src="libs/phasersrc/geom/Rectangle.js"></script>
    112 
    113         <script src="libs/phasersrc/net/Net.js"></script>
    114 
    115         <script src="libs/phasersrc/tween/TweenManager.js"></script>
    116         <script src="libs/phasersrc/tween/Tween.js"></script>
    117         <script src="libs/phasersrc/tween/Easing.js"></script>
    118 
    119         <script src="libs/phasersrc/time/Time.js"></script>
    120         <script src="libs/phasersrc/time/Timer.js"></script>
    121         <script src="libs/phasersrc/time/TimerEvent.js"></script>
    122 
    123         <script src="libs/phasersrc/animation/AnimationManager.js"></script>
    124         <script src="libs/phasersrc/animation/Animation.js"></script>
    125         <script src="libs/phasersrc/animation/Frame.js"></script>
    126         <script src="libs/phasersrc/animation/FrameData.js"></script>
    127         <script src="libs/phasersrc/animation/AnimationParser.js"></script>
    128 
    129         <script src="libs/phasersrc/loader/Cache.js"></script>
    130         <script src="libs/phasersrc/loader/Loader.js"></script>
    131         <script src="libs/phasersrc/loader/LoaderParser.js"></script>
    132 
    133         <script src="libs/phasersrc/sound/Sound.js"></script>
    134         <script src="libs/phasersrc/sound/SoundManager.js"></script>
    135 
    136         <script src="libs/phasersrc/utils/Debug.js"></script>
    137         <script src="libs/phasersrc/utils/Color.js"></script>
    138 
    139         <script src="libs/phasersrc/physics/arcade/SAT.js"></script>
    140         <script src="libs/phasersrc/physics/arcade/ArcadePhysics.js"></script>
    141         <script src="libs/phasersrc/physics/arcade/Body.js"></script>
    142 
    143         <script src="libs/phasersrc/particles/Particles.js"></script>
    144         <script src="libs/phasersrc/particles/arcade/ArcadeParticles.js"></script>
    145         <script src="libs/phasersrc/particles/arcade/Emitter.js"></script>
    146 
    147         <script src="libs/phasersrc/tilemap/Tile.js"></script>
    148         <script src="libs/phasersrc/tilemap/Tilemap.js"></script>
    149         <script src="libs/phasersrc/tilemap/TilemapLayer.js"></script>
    150         <script src="libs/phasersrc/tilemap/TilemapParser.js"></script>
    151         <script src="libs/phasersrc/tilemap/Tileset.js"></script>
    152 
    153         <script src="libs/phasersrc/PixiPatch.js"></script>
    154         <!-- 引入那么多文件是方便调试和查看源码,发布时只需要引入phaser.min.js就行了 -->
    155 <!-- <script type="text/javascript" src="libs/phaser/phaser.min.js"></script> -->
    156 <script type="text/javascript" src="js/main.js"></script>
    157 </head>
    158 <body>
    159 <div id="phaser-example"></div>
    160 </body>
    161 </html>
    01-03

    3.加载一个图片,移动动画,响应点击事件

    /**
     * 
     */
    
    var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create });
    
    function preload() {
    
        //  You can fill the preloader with as many assets as your game requires
    
        //  Here we are loading an image. The first parameter is the unique
        //  string by which we'll identify the image later in our code.
    
        //  The second parameter is the URL of the image (relative)
        game.load.image('einstein', 'assets/pics/ra_einstein.png');
    
    }
    
    function create() {
    
        //  This creates a simple sprite that is using our loaded image and
        //  displays it on-screen
        var image=game.add.sprite(0, 0, 'einstein');
        image.body.velocity.x=50;
        image.inputEnabled=true;
    
        image.events.onInputDown.add(listener,this);    
    }
    
    function listener(){
        alert('clicked');
    }
    
    01-03.js
    01-03.js

    4.尝试

      设置断点查看生命周期。在生命周期方法中加上debugger;语句强制断点。

     1 /**
     2  * 
     3  */
     4 
     5 var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create,update:update,render:render });
     6 
     7 function preload() {
     8 
     9     //  You can fill the preloader with as many assets as your game requires
    10 
    11     //  Here we are loading an image. The first parameter is the unique
    12     //  string by which we'll identify the image later in our code.
    13 
    14     //  The second parameter is the URL of the image (relative)
    15     game.load.image('einstein', 'assets/pics/ra_einstein.png');
    16 
    17     debugger;
    18 }
    19 
    20 function create() {
    21 
    22     //  This creates a simple sprite that is using our loaded image and
    23     //  displays it on-screen
    24     var image=game.add.sprite(0, 0, 'einstein');
    25 //    image.body.velocity.x=50;
    26     image.inputEnabled=true;
    27 
    28     image.events.onInputDown.add(listener,this);
    29     
    30     debugger;
    31 }
    32 
    33 function listener(){
    34     alert('clicked');
    35 }
    36 function update(){
    37     debugger;
    38 }
    39 function render () {
    40     //debug helper
    41     game.debug.renderInputInfo(32,32);
    42     debugger;
    43 }
    01-03.js加断点

      经过实验可以看出调用方法:preload(加载资源),create(创建对象和其他初始化工作),update和render方法在每次渲染时都会调用

    通过这个简单的例子可以让我们对phaser.js框架有个大概的了解,

  • 相关阅读:
    可视化百分比数据,Excel图表展示小技巧
    巧用宏录制,轻松制作Excel简易查询小系统
    Excel也能制作电子印章,你见过吗?学会了职场不求人
    ​21个Shift组合快捷键,学会了想加班都难
    Excel中关于日期时间的小知识小技巧,你还记得多少?
    自动添加单元格边框,Excel有妙招,两个技巧任意选
    [asp.net] 通过JS实现对treeview控件的复选框单选控制。
    编译器把getset访问器编译成了方法get_method()/set_method()
    sql MERGE
    动态添加特性
  • 原文地址:https://www.cnblogs.com/Mr-Nobody/p/3589612.html
Copyright © 2011-2022 走看看