zoukankan      html  css  js  c++  java
  • coco2d-js demo程序之滚动的小球

    近期有一个游戏叫围住神经猫,报道说是使用html5技术来做的。 html5的跨平台的优良特性非常不错。对于人手不足,技术不足,选用html5技术实现跨平台的梦想真是不错。

    近期在看coco2d-js这个跨平台游戏开发框架。非常不错,写了一个demo程序供大家參考。

    /**
     * Created by caicai on 14-7-27.
     */
    var Ball = cc.Sprite.extend({
        velocity:null,
        ctor:function () {
            this._super(res.Ball_png);
            var size = cc.director.getWinSize();
            this.x = size.width/2;
            this.y = size.height/2;
    
            this.velocity = cc.p(10,10);
        },
        update:function(dt){
            this.setPosition(cc.pAdd(this.getPosition(), cc.pMult(this.velocity, dt)));
            this.checkHitEdge();
        },
        checkHitEdge: function() {
            var pos = this.getPosition();
            var winSize = cc.director.getWinSize();
    
            if (pos.x > winSize.width - this.width || pos.x < this.width) {
                this.velocity.x *= -1;
            } else if (pos.y > winSize.height - this.height || pos.y < this.height) {
                this.velocity.y *= -1;
            }
        }
    });
    
    var GameLayer = cc.Layer.extend({
        _ball:null,
        _touchBeginAt: null,
        ctor:function () {
            this._super();
    
            this._ball = new Ball();
            this.addChild(this._ball);
    
            cc.eventManager.addListener({
                event: cc.EventListener.TOUCH_ONE_BY_ONE,
                swallowTouches: true,
                onTouchBegan: this.onTouchBegan,
                onTouchMoved: this.onTouchMoved,
                onTouchEnded: this.onTouchEnded
            }, this);
    
            this.scheduleUpdate();
            return true;
        },
    
        update:function(dt){
            this._ball.update(dt);
        },
    
        onTouchBegan:function(touch, event) {
            this._touchBeginAt = touch.getLocation();
            console.log("begin")
            return true;
        },
    
        onTouchMoved:function(touch, event) {
        },
    
        onTouchEnded:function(touch, event) {
            console.log("end")
            var endAt = touch.getLocation();
            if(this._touchBeginAt == null) return true;
            var velocity = cc.pSub(endAt, this._touchBeginAt);
            event.getCurrentTarget()._ball.velocity = velocity;
            return true;
        }
    
    });
    
    var BallScene = cc.Scene.extend({
        layer:null,
        onEnter:function () {
            this._super();
            this.layer = new GameLayer();
            this.addChild(this.layer);
    
            this.schedule(this.update, 0);
    
        },
        update: function(dt){
            this.layer.update(dt);
        }
    
    });
    

    眼下还不完好,还有改进空间。

  • 相关阅读:
    单机安装hadoop+hive+presto
    java ListMap使用多个key比较
    java多线程-3-使用多线程的时机
    java多线程-2-概念和实现机制
    mysql的varchar和oracle的varchar2比较
    js-对象创建
    java关于json的一些问题
    spring使用RedisCacheManager管理key的一些问题
    如何提高工作效率
    关系数据库之-事务
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7151431.html
Copyright © 2011-2022 走看看