2012-03-15 26 views
0

配列に問題があります。私はそれらを作成します(私は正しく設計されているかどうかはわかりませんが)、それをチェックする方法を理解することが困難です。JavaScriptの多次元配列チェック

私の配列は次のように作成されます。

id    = i++; 
uid    = my_id; 
imgwidth  = img[0].width; 
imgheight  = img[0].height; 
spritea[uid] = new Array(); 
spritea[uid][0] = abposx; 
spritea[uid][1] = abposy; 
spritea[uid][2] = imgwidth; 
spritea[uid][3] = imgheight; 

は、私はこれだけで画像の位置に関する情報を格納し、それを一意のIDを与えるための正しい方法であると仮定しています。

私はその後、フォローの例を基準にチェックをしたい:

if (x > spritea[0] && x < spritea[0]+spritea[2]){ 
    var uid = //get the UID of the array ; 
} 

しかし、私は私の配列が間違って構成されていると思いますか?何かアドバイス?

答えて

2

オブジェクトを使用します。それはきれいだ:検索するための

function create_image(id) { 
    this.id = id; 
    this.height = 0; 
    this.width = 0; 
    this.x = 0; 
    this.y = 0; 
} 

my_image = create_image(++i); 
my_image.width = img[0].width; 
my_image.height = img[0].height; 
my_image.x = abposx; 
my_image.y = abposy;​ 

、これを試してみてください。

found_image = false; 

for (var i = 0; i < spritea.length; i++) { 
    if (spritea[i].width == 4) { 
    found_image = spritea[i]; 
    break; 
    } 
} 

if (found_image) { 
    // found_image is your image 
} 
+0

IDを取得するにはどのようにif文を使用しますか? – Sir

+0

どういう意味ですか? – Blender

+0

最初の投稿を見ると、[uid]値が配列の値をチェックするのを試みています。しかし、私は配列が間違っていると思う=/ – Sir

0

あなたはuid

を含める必要があるとして、あなたがやっているテストが間違っている

if (x > spritea[someuid][0] && x < spritea[someuid][0]+spritea[someuid][2]){ 
すなわち

これは良いかもしれない:

function Image(id, x, y, w, h) 
{ 
    this.width = w; 
    this.height = h; 
    this.x = x; 
    this.y = y; 
    this.IsXInside = function(x) { return (x > this.x && x < (this.x + this.width)); }; 
} 

あなたがイメージの作成:

spritea[uid] = new Image(id, abposx, abposy, imgwidth, imgheight); 

を次にテストが

if (sprite[someuid].IsXInside(x)) 
1

あなたは "スプライト" の配列が

var sprites=[]; 

sprite[123] = { x:aposx, y:aposy, width:imgwidth, height:imgheight }; 
オブジェクトたいように見えるなり、

とチェックしてください。

var sprite = sprites[1]; 
if (x < sprite.x && sprite.x + sprite.width < x) 
{.... } 
+0

[1]の値は、配列の値をチェックして "uid"を取得しようとしているので、私は検索しようとしているものなので、スプライト[1]を使用できません。これまで一致= uid i grab = /しかし、配列でuidを使用できない場合は、配列をどのように構造化するのですか?すべて自分の情報を持ってロードされるuidがたくさんあります – Sir