【发布时间】:2016-01-27 16:28:38
【问题描述】:
我正在关注关于 tuts+ 的关于使用easeljs(browserify、bower、grunt)开发游戏的教程。我在我的头上,但我希望完成,但教程工作流程(类模型)的一部分现在已被弃用。这是 createjs 团队不得不说的:http://blog.createjs.com/new-createjs-class-model/
我不太了解,因为我不了解以前的模型,而 TBH 试图让 JS 表现得像 OO 一样可能会很痛苦。
我有基于easeljs 在线演示的main.js 和Button.js。我想扩展easeljs Container并导出Button原型(原型是JS定义类的方式,对吗?)并在main.js中使用(创建实例?)它。
我应该使用匿名函数来包装 Button.js 文件以避免使用全局范围,还是因为我通过其构造函数导出它而没有必要?
导出构造函数是导出 JS 类的首选方式吗?
Button.js 中的
var p代表原型?如果我要为这个类创建新方法,我会使用
p.newMethod = function() {};函数表达式吗?当我在 main.js 中创建 Button 实例 (var myButton = new Button("Best button", "green")) 时,我可以这样称呼它们 -myButton.newMethod;?非常感谢任何其他更正和有用的轻到中等重量的内容链接。
main.js
'use strict';
var utils = require('./util/index')
, domReady = utils.domReady
, Button = require('./Button');
var c = createjs;
console.log('Game started: EaselJS version: ' + c.EaselJS.version);
domReady(function () {
var stage = new c.Stage('main');
stage.addChild(new Button("Best button", "green"));
stage.update();
});
Button.js
'use strict';
module.exports = Button;
function Button(label, color) {
this.Container_constructor();
this.color = color;
this.label = label;
this.setup();
}
var p = createjs.extend(Button, createjs.Container);
p.setup = function() {
var text = new createjs.Text(this.label, "20px Arial", "#000");
text.textBaseline = "top";
text.textAlign = "center";
var width = text.getMeasuredWidth()+30;
var height = text.getMeasuredHeight()+20;
text.x = width/2;
text.y = 10;
var background = new createjs.Shape();
background.graphics.beginFill(this.color).drawRoundRect(0,0,width,height,10);
this.addChild(background, text);
this.cursor = "pointer";
this.mouseChildren = false;
this.offset = Math.random()*10;
this.count = 0;
};
window.Button = createjs.promote(Button, "Container");
- 请不要对我说“这个问题太宽泛” - 它尽可能直截了当,非常感谢您的帮助。
【问题讨论】:
标签: javascript browserify createjs easeljs