摇一摇诞生记八(经验总结)(cocos creator第一个项目)

该总结的已总结,这篇主要说说最佳实践和 解决问题的思路,以及拾遗。

最佳实践:

cocos项目开发:

1. 组织 config.js 用来存储配置; data.js用来存储全局数据;用module.exports导出

2. 每个场景的节点Canvas 作为根节点并且名字就是 Canvas ;场景脚本作为Canvas的组件;

3.场景名称和 脚本名称一样,如:场景名称game  脚本名称也为game.js。目的是方便消息的事件分发到对应脚本中。

4. 游戏时间控制:要使用实时时间 精确到毫秒,注意和游戏倒计时不同:代码如下:

 

gamedata.lastGameSeconds = config.gameSecondsLimit; //2分钟

gamedata.startTimestamp = (new Date()).getTime() ;
gamedata.endTimestamp = gamedata.startTimestamp + config.gameSecondsLimit * 1000;

 

gateway :

 

1. 本机环境注意 :虚拟机使用桥接方式最好,因为这样可以用手机扫码做测试。不然用手机扫码是无法和本机大屏进行通信的!

2. 开发阶段在 screen_login 中注释掉:

 

//     if(Gateway::isUidOnline(self::$_screenUid)){  开放去掉,上线 打开
//       return false;
//    }

避免低级错误:

1. 如 javascript 基本语言语法问题 如: 判断 属性 in  对象

if( !( name in obj){...}  注意加上括号。

creator 开发工具使用:

1. 打包时 ,关掉 php websocket服务。

解决问题思路:

1. 多看看 官网手册, 其次百度

2. 遇到一个问题是也许是解决不完美,或是个坎,不要陷进去,先做别的,过几天再回来做,完善。

说到这里说个具体例子: 一开始 手机端摇一摇存在手机倾斜某些位置 ,分数一秒增加二三十次,在最后一两天也得到了解决,代码:如下:

    onDeviceMotionEvent :function (event) {
        var nowGX = event.acc.x.toFixed(2);
        var nowGY = event.acc.y.toFixed(2);
        var nowGZ = event.acc.z.toFixed(2);


        this.x_arr.push(nowGX);
        this.y_arr.push(nowGY);
        if(this.x_arr.length > 8 ){
            var is_get = this._isGetScore(this.x_arr,this.y_arr);

            if(is_get){
                this.score += 1;
                this.scoreDisplay.string = this.score.toString();
            }

            this.x_arr = [];
            this.y_arr = [];
        }

    },

    _isGetScore(x_arr,y_arr){
        var stand = 0.05;
        var x_gt = 0;
        var x_lt = 0;

        var y_gt = 0;
        var y_lt = 0;

        for(var i=0; i < x_arr.length ; i++){
            if(x_arr[i] > stand){
                x_gt = 1;
            }
            if(x_arr[i] < -stand){
                x_lt = 1;
            }
        }

        for(var j=0; j < y_arr.length ; j++){
            if(y_arr[j] > stand){
                y_gt = 1;
            }
            if(y_arr[j] < -stand){
                y_lt = 1;
            }
        }

        return (x_gt && x_lt) || (y_gt && y_lt);


    },

也许不是最完美的,比起刚开始代码好太多了,满足了需求。

 

这个小游戏只用到了cocos一小部分知识,像碰撞,复杂的动画,等等还没用到。游戏逻辑也比较简单。要想真正熟练cocos开发还有很长路要走。cocos websocket 封装还有待完善。另外后端php  websocket也有很大的改善空间。

如果这个项目一系列的博客,能够帮助到你,我很开心,其中一些问题的处理肯定有不是很好的地方,大神看到了,也欢迎留言交流。

 

moveTo  (时间,坐标)

注意时间要和下一次调用moveTo间隔差不多,如都是0.2秒,不然调用间隔 0.2,时间参数是2,就会出现倒退,闪现乱动现象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值