做了个移动图块的游戏,每移动一个图块就记一步,移动物件做了一个move.js,所有元素都调用它,实现了移动一步90的距离,另一个记步是一个game.js,里面有一个自加1的自定义函数。
按理说,移动结束后,move这边如下:
self.node.on(cc.Node.EventType.TOUCH_END, function (event) {
var stX = G.orgX;//获取起始坐标x
var stY = G.orgY;//获取起始坐标y
var eX = self.node.x;//获取移动结束坐标x
var eY = self.node.y;//获取移动结束坐标y
if(eX!=stX || eY!=stY){
self.gainScore();//调用game.js里的自加函数
}
}, self.node);
但gainScore()根本就调用不了,还要出错。移动完成后,如何调用另一个js里的函数,谁知道,请教了
如果game.js是普通的脚本,引用进来,如果是组件,通过挂在的节点node.getComponent(“game”)获取.做为一个新手,看样子而且还是编程新手,强烈推荐https://docs.cocos.com/creator/manual/zh/getting-started/先把新手入门的文档看完
//这是得分的函数,测试已经能运行,加1
var Game ={
gainScore: function(){
var self = this;
var scores = parseInt(ALLGOL.scores);
var levels = parseInt(ALLGOL.levels);
//获取时间
var myDate = new Date();
var year = myDate.getFullYear(); //获取完整的年份(4位,1970-???)
var monthBase = parseInt(myDate.getMonth()); //获取当前月份(0-11,0代表1月)
var month=monthBase+1;
var day = myDate.getDate(); //获取当前日(1-31)
var hour = myDate.getHours(); //获取当前小时数(0-23)
var minute = myDate.getMinutes(); //获取当前分钟数(0-59)
var sec = myDate.getSeconds(); //获取当前秒数(0-59)
var stages=32-(levels+1);
this.score += 1;
// 更新 scoreDisplay Label 的文字
this.scoreDisplay.string =“步数:”+ this.score.toString();
this.endScore.string = “总计:” + this.score.toString()+ " 步";
this.stage.string = “时间:” + year.toString()+ “年” + month.toString()+ “月” + day.toString()+ “日” + hour.toString()+ “:” + minute.toString()+ “:” + sec.toString()+" 还剩" + stages.toString()+ “关”;
//判断最新步数低于老成绩就替换本关成绩
if(scores === 0 || scores == null || isNaN(scores) || scores<6 ){
var final = self.score;
}else if(self.score < scores ){
var final = self.score;
}else{
var final=scores;
}
window.ENDfinal = final;//最后得分
}
},
module.exports = Game;//导出
move.js文件
var Game = require(“Game”);//导入模块
//发生位移执行函数
if(stX!= eX || stY!= eY){
self.Game.gainScore();
//cc.log(“移动成功”);
}
居然总是报错:
Uncaught TypeError: Cannot read property ‘gainScore’ of null at cc_Node.
请问,这是思路错了吗?
self.Game ~ 先看看js的语法吧~,把self.去掉