首页 > 代码库 > coco2d-js demo程序之滚动的小球

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);
    }

});

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

coco2d-js demo程序之滚动的小球