我开始使用 Google 的 Closure 库(以及 Lime.js),我正在尝试创建一个非常基本的场景,其中包含 Lime.js 的 Lime.Layer 类的自定义子类的一些实例。
据我了解(正如我在各种示例和 Google 自己的文档中阅读的那样),您的子类中需要 7 个项目才能正确继承其预期的超类,并可供其他类使用:
- goog.provide("name.of.subclass")
- goog.require("name.of.superclass")
- 在构造函数@constructor上方的注释中
- 在构造函数@extends name.of.superclass 上方的注释中
- 在构造函数内部,调用 name.of.superclass.call(this)
- 在构造函数之后, goog.inherits(name.of.subclass, name.of.superclass)
- 最后,使用 goog.exportSymbol('name.of.subclass', name.of.subclass) 导出构造函数
我的项目结构很简单。“index.html”位于主级别,旁边是一个名为“js”的文件夹,其中包含我所有的自定义 JavaScript 文件。我已经运行了其他更简单的测试来确认 Closure 和 Lime 都正确加载和初始化。我只是想进一步进入一些更多 OO 风格的模式。我的代码和我遇到的错误如下。
索引.html
<!DOCTYPE html>
<html>
<head>
<title>LimeTest</title>
<script type="text/javascript" src="../closure/closure/goog/base.js"></script>
<script type="text/javascript" src="js/limetest.js"></script>
</head?
<body onload="limetest.start()"></body>
</html>
js/limetest.js
// Expose class
goog.provide('limetest');
// Import dependencies
goog.require('lime.Director');
goog.require('lime.Scene');
goog.require('lime.Layer');
// Import custom subclass of lime.Layer
goog.require('stupid.thing');
// Main Start function
limetest.start = function ()
{
// setup Lime.js scene
var director = new lime.Director(document.body, 1024, 768);
var scene = new lime.Scene();
var mainLayer = new lime.Layer().setPosition(512, 384);
// instantiate subclass
var something = new stupid.thing();
// assemble scene
scene.appendChild(mainLayer);
mainLayer.appendChild(something);
director.makeMobileWebAppCapable();
director.replaceScene(scene);
}
// Export start method
goog.exportSymbol('limetest.start', limetest.start);
js/东西.js
goog.provide('stupid.thing');
goog.require('lime');
goog.require('lime.Layer');
/*
* @constructor
* @extends lime.Layer
*/
stupid.thing = function ()
{
lime.Layer.call(this);
};
goog.inherits(stupid.thing, lime.Layer);
goog.export('stupid.thing', stupid.thing);
我在 Chrome 中遇到的错误是:
base.js: 634 goog.require could not find: stupid.thing
base.js: 634 goog.logToConsole_
base.js: 675 goog.require
limetest.js: 10 (anonymous function)
base.js: 677 Uncaught Error: goog.require could not find: stupid.thing
base.js: 677 goog.require
limetest.js: 10 (anonymous function)
我在这里想念什么?