所以今天我决定玩一下LimeJS,我之前从未使用过Closure,这对我来说也是新的。我一直遇到一个小问题而且不确定是什么问题。
到目前为止,我的项目只有三个文件:firstGame.html
,firstGame.js
,`player.js
firstGame.html:
<!DOCTYPE HTML>
<html>
<head>
<title>firstGame</title>
<script type="text/javascript" src="../closure/closure/goog/base.js"></script>
<script type="text/javascript" src="firstGame.js"></script>
<script type="text/javascript" src="player.js"></script>
</head>
<body onload="firstGame.start()"></body>
</html>
firstGame.js:
goog.provide('firstGame');
//get requirements
goog.require('lime.Director');
goog.require('lime.Scene');
goog.require('lime.Layer');
goog.require('lime.Circle');
goog.require('lime.Label');
goog.require("lime.Sprite");
goog.require('lime.animation.Spawn');
goog.require('lime.animation.FadeTo');
goog.require('lime.animation.ScaleTo');
goog.require('lime.animation.MoveTo');
goog.require("firstGame.Player");
// entrypoint
firstGame.start = function(){
var director = new lime.Director(document.body,1024,768);
director.makeMobileWebAppCapable();
scene = new lime.Scene();
var background = new lime.Sprite().setSize(1524,768).setPosition(0,0).setFill(0,0,0).setAnchorPoint(0,0);
var player = new firstGame.Player();
scene.appendChild(background);
// set current scene active
director.replaceScene(scene);
}
//this is required for outside access after code is compiled in ADVANCED_COMPILATIONS mode
goog.exportSymbol('firstGame.start', firstGame.start);
最后是player.js(这个想法是一个自定义ui组件,所以我从Sprite继承):
goog.provide("firstGame.Player');
goog.require('lime.Sprite');
// new constructor
firstGame.Player = function(){
// call parents constructor
goog.base(this);
// custom initialization code
this.color_ = 'red';
}
// define parent class
goog.inherits(firstGame.Player,lime.Sprite);
然后我运行了lime.py update
(不确定我是否需要,因为我只是添加一个类而不是一个全新的命名空间,但我认为我应该只是为了安全)
当我加载页面时,我收到上面提到的意外令牌错误,这发生在player.js,goog.provide()的第1行。现在,如果我从我的html文件中的脚本路径中删除player.js,我发现我的其他代码运行正常,这表明我按预期链接到Closure库。只是当我尝试在player.js中使用它时,我遇到了问题。我的第一个倾向是,在Closure库被解析之前,代码可能正在执行,我在Closure加载时找了一些钩子但是找不到任何东西。我用Google搜索过,但没有找到答案。我觉得我错过了一些简单的东西,但却无法得到它。如果有人有任何建议我会很感激,非常感谢!
答案 0 :(得分:2)
goog.provide("firstGame.Player');
应该是
goog.provide('firstGame.Player');
你的qoutes不匹配。