首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建和填充外部Javascript对象

创建和填充外部Javascript对象
EN

Stack Overflow用户
提问于 2013-04-08 11:12:29
回答 3查看 484关注 0票数 2

我来自C#/Java背景,我正在努力学习如何用HTML5制作游戏。我遇到了一个令我困惑的问题,尽管我通常会问一个朋友,但他一直在失踪。我很抱歉创建了一个账号来询问社区,但我一直在寻找答案,但无济于事。

所以问题是...我想创建一个游戏对象,它可以容纳一个塔的实例。另外,我想创建一个塔的数组列表作为后端存储库。本质上,我希望这些是外部的js文件,我可以在我的主游戏中引用它们。我不确定这在js中是否可行,也不确定这是如何工作的。

我想做的是..。创建一个外部JS文件并声明一个塔对象。这就是我迷路的地方。我想创建另一个对象,它只是第一种类型的一个列表,一个towerList。在这个外部JS文件中,我打算用一组塔属性填充列表。然后,在包含canvas元素的主文件中,我将遍历列表并绘制图形。我不知道该怎么做。

代码语言:javascript
运行
复制
function Tower (type, texture, cost, damage, speed, range, health, Xpos, Ypos) 
{
this.type = type;
this.texture = new Image();
this.texture.src = texture;
this.cost = 0;
this.damage = 0;
this.speed = 0;
this.range = 0;
this.health = 0;
this.Xposition = 0;
this.Yposition = 0;
this.target = false;
}


var TowerList = [Tower("Basic", "tower.png", 0, 0, 0, 0, 0, 0, 0), Tower(), Tower()];

我怀疑我是否能正常工作,但我希望能够在主项目中创建towerlist的实例,像数组一样随机访问它,并按我认为合适的方式打印它的内容。在JS中实现这一点的最好的面向对象方法是什么?我希望稍后在主代码中能够这样从列表中分配一个塔

代码语言:javascript
运行
复制
var tL = new TowerList();
var tower = new Tower();

tower = tL[0];

我今天才开始这样做,所以我意识到有很多东西需要学习。我认为我需要将函数重新定义为var,否则我可以实例化它(我确信我在前面已经读过了)。如果有人能帮助我,或者给我指出一个资源的方向,这个资源有我可以学习的例子,我将非常感激。

EN

Stack Overflow用户

发布于 2013-04-08 11:31:11

代码语言:javascript
运行
复制
//your towers should be called using new here, assuming you actually 
//want a list of towers
var TowerList = [Tower("Basic", "tower.png", 0, 0, 0, 0, 0, 0, 0), Tower(), Tower()];
//TowerList needs to be a function to be called with new.  This will error out.
var tL = new TowerList();
//This should work correctly
var tower = new Tower();

//this would overwrite the new Tower() with tl[0]
tower = tL[0];

如果您希望能够创建TowerList对象,则可能需要如下所示的内容

代码语言:javascript
运行
复制
function TowerList(){
    this.list = [];

}


TowerList.prototype.addTower(tower){
  list.push(tower);

}


TowerList.prototype.getList(){
  return this.list;

}

然后你就可以这样做了

代码语言:javascript
运行
复制
var tL = new TowerList();
tL.addTower(new Tower("Basic", "tower.png", 0, 0, 0, 0, 0, 0, 0));
tL.addTower(new Tower());


var tower = tL[0];
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15870677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档