-エリオットBにより解決。ありがとう!他の変更も考慮に入れる場合があります。
結果は次のとおりです。みなさん、迅速な回答をありがとう! http://dl.dropbox.com/u/18785762/Rust/index.html
私はゲームをJavaScriptで書いています。そして、簡単に編集できるように、ブロックIDをマップコンパイラからの別の.jsファイル内のファイルに一致させるためのファイルを保持したいと思います。ただし、IDは配列に格納されており、return関数を適切に使用するように取得できないようです。何か助け?
drawmap.js:
function drawmap() {
var images = BlockID();
var level = [
"ssssssssssssssssssssss",
"sgggggggggCCCCCdddddss",
"ssssssssss sssssss"
];
var top = 100;
var left = 100;
var mytop = top;
var myleft = left;
for (y=0; y<level.length; ++y) {
var row = level[y];
for (x=0; x < row.length; ++x) {
var c = row.charAt(x);
if(c != ' ') {
img_create(images[c], mytop, myleft);
}
mytop += 13;
myleft += 27;
}
mytop = top + (y+1)*13;
myleft = left - (y+1)*27;
}
}
mapread.js:
function BlockID() {
var IDs = new Array();
images['s'] = "Images/Block_01.png";
images['g'] = "Images/Block_02.png";
images['C'] = "Images/Block_03.png";
images['d'] = "Images/Block_04.png";
return IDs;
}
少なくとも、これを変更します。
function BlockID() {
var IDs = new Array();
images['s'] = "Images/Block_01.png";
images['g'] = "Images/Block_02.png";
images['C'] = "Images/Block_03.png";
images['d'] = "Images/Block_04.png";
return IDs;
}
これに:
function BlockID() {
var IDs = new Object();
IDs['s'] = "Images/Block_01.png";
IDs['g'] = "Images/Block_02.png";
IDs['C'] = "Images/Block_03.png";
IDs['d'] = "Images/Block_04.png";
return IDs;
}
指摘すべき修正点がいくつかあります。 最初、images
は元の関数で定義されていないため、プロパティ値を割り当てるとエラーがスローされます。 images
をIDs
に変更することで修正します。 Second、Object
ではなく、Array
を返します。オブジェクトには、連想配列またはハッシュに似たプロパティ値を割り当てることができます。配列にはできません。そこで、var IDs = new Array();
の宣言をvar IDs = new Object();
に変更します。
これらの変更後、コードは正常に実行されますが、さらに簡略化になります。短縮表記(つまり、オブジェクトリテラルプロパティ値の短縮)を使用して、オブジェクトを作成し、すぐに返すことができます。
function BlockID() {
return {
"s":"Images/Block_01.png"
,"g":"Images/Block_02.png"
,"C":"Images/Block_03.png"
,"d":"Images/Block_04.png"
};
}
BlockID
関数は未定義の変数images
を使用しますが、これはエラーにつながります。また、ここでArray
を使用しないでください-JavaScriptのキーと値のマップはプレーンオブジェクトです:
function BlockID() {
return {
"s": "Images/Block_01.png",
"g": "Images/Block_02.png",
"C": "Images/Block_03.png",
"d": "Images/Block_04.png"
};
}
きちんとした:
function BlockID() {
return {
"s":"Images/Block_01.png",
"g":"Images/Block_02.png",
"C":"Images/Block_03.png",
"d":"Images/Block_04.png"
}
}
あるいは単に
var images = {
"s":"Images/Block_01.png",
"g":"Images/Block_02.png",
"C":"Images/Block_03.png",
"d":"Images/Block_04.png"
}