我是这个论坛的新手,我已经搜索过几个小时的敲打墙,甚至在TeamTreeHouse注册了一个关于阵列的详细课程我无法找到我想要的东西。我喜欢teamTreehouse。
我遇到了尝试从C#切换到Javascript的问题,列表和数组不同。它适用于RPG Maker MV。我想列出一个" CharacterID"的位置X和Y的列表。并计算我放入X位置和Y位置数组的每个瓷砖的距离。字符的ID为0或更多,具体是它的ID&及其x和y位置的eventArray [ID,x,y]。所以我得到了CharacterID的位置,但我不了解我的生活如何循环这个东西,这样我得到最多10行代码而不是36行(我的数组的长度)。在C#中,Vector3会自动添加到列表或字典中,并且是单独的" items"但如果我尝试使用相同的Javascript数组原则,我会得到1个包含整个条目列表的项目,但我不知道如何检索它们。
var eventArray = [];
var tilePosArrayXadd1 = [];
var tilePosArrayYadd1 = [];
Game_Event.prototype.initialize = function (mapId, eventId) {
Game_Character.prototype.initialize.call(this);
this._mapId = mapId;
this._eventId = eventId;
this.locate(this.event().x, this.event().y);
var eventX = this.event().x;
var eventY = this.event().y;
this.refresh();
eventArray.push([eventId, eventX, eventY]);
};
Game_Player.prototype.locate = function (x, y) {
Game_Character.prototype.locate.call(this, x, y);
actorX = $gamePlayer.x;
actorY = $gamePlayer.y;
main(actorX, actorY);
};
function main(x, y) {
var maxTileDist = 2;
///TOPRIGHTTILES
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y + 1);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y + 2);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y + 3);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y + 4);
};
///TOPLEFTTILES
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y + 1);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y + 2);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y + 3);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y + 4);
};
///BOTTOMRIGHTTILES
/*for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push([[i + x+1], y]);
};*/
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y - 1);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y - 2);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y - 3);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i + x);
tilePosArrayYadd1.push(y - 4);
};
///BOTTOMLEFTTILES
/*for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push([[i - x], y]);
};*/
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y - 1);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y - 2);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y - 3);
};
for (var i = 0; i < maxTileDist ; i++) {
tilePosArrayXadd1.push(i - x);
tilePosArrayYadd1.push(y - 4);
};
var tilex0 = [];
var tiley0 = [];
for (var j = 0; j < tilePosArrayXadd1.length; j++) {
tilex0.push(eventArray[0][1] - tilePosArrayXadd1[j]);
tiley0.push(eventArray[0][2] - tilePosArrayYadd1[j]);
console.log(tilex0[0])
console.log(tilex0.length)
}
上面的代码给了我一个长度为1 ...当我以为它会给我一个tilePosArrayXadd1.length列表,如#34; j&#34;变量。所以大声笑,任何人都可以解释我做错了什么或指导我一个非常好的教程,包含对这个问题的解释。谢谢你们的时间。 Ninekorn
答案 0 :(得分:3)
你是新来的。如果你没有查看Help Center,那可能是个好主意,尤其是关于创建minimal, complete, and verifiable example
的部分当我尝试为您的代码执行此操作时,我想出了一些可以正常运行的内容:
var events = [[10, 20]]
var foo = [];
var bar = [1, 2, 3]
for (var j = 0; j < bar.length; j++) {
foo.push(events[0][1] - bar[j]);
}
console.log(foo); //=> [19, 18, 17]
console.log(foo.length); //=> 3
通常情况下,在尝试创建此类示例时,您将自行找到错误。但是,如果没有,你可以建立这个简单的例子回到你的代码,看看它什么时候打破?这应该有助于解决它。