简单的JavaScript游戏,隐藏/显示随机广场

时间:2011-04-30 13:16:15

标签: javascript jquery raphael

我正在制作一个简单的游戏,我需要一些帮助才能改进我的代码

所以这是游戏:

一些方形显示并隐藏了几秒钟,你必须对它们进行陈词滥调。 我使用RaphaelJS绘制正方形和一些JQuery($ .each()函数)

我在div中工作,这就是我绘制正方形(6个方格)的方式,x y是随机数。

 var rec1 = paper.rect(x, y, 50, 50).attr({
            fill: "blue",});

我可以使用for()为每个广场构建一个不同的var名称吗? 我尝试使用var = varName + i但它没有用。

要隐藏和显示方块,我使用两个函数调用两个setTimeout:

 function box1()  {rec1.show();}
 function hidebox1()  {rec1.hide();}
 var time1 = setTimeout(box1, 1000);
 var time1 = setTimeout(hidebox1, 2000);

我知道它看起来很糟糕......

我确信有一种方法可以使用切换,或者如果你能帮助我找到它就更喜欢这样做:)因为现在我必须为每个方块做到这一点... < /强>

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您尝试使用varName加上一些i来识别您想要的varName的本能,并且JavaScript(与大多数语言一样)通过所谓的内置来构建 数组

一个简单的看起来像这样:

var foo = [1, 5, 198, 309];

使用该数组,您可以访问foo[0] 1foo[3] 309

注意两件事:首先,我们使用方括号识别我们想要的数组元素。其次,我们开始计算 0 ,而不是1。

您可以创建一个空数组,例如var varName = [];,然后使用varName.push( newValueToPutIn );

为其添加新元素

使用这些工具,您现在可以获得所需的信息。现在你可以做类似的事情:

var recs = [];
for(var i = 0; i < 100; i++) {
    var rec = paper.rect(x, y, 50, 50).attr({fill: 'blue'});
    recs.push(rec);
}

recs[0]recs[1]等等将引用您的各种方框。

答案 1 :(得分:0)

对于第一个问题,数组是要走的路。 对于第二部分,您可以将正方形及其显示/隐藏内容封装到一个新的匿名对象中,如下所示:

var recs = [];
var numberOfRecs = 6;
for (var i = 0; i < numberOfRecs; i++) {
    //determine x and y?
    recs.push({
        box: paper.rect(x, y, 50, 50).attr({ fill: "blue" }),
        showBriefly: function(timeFromNow, duration) {
            window.setTimeout(this.box.show, timeFromNow);
            window.setTimeout(this.box.hide, timeFromNow + duration);
        }
    });
}


//show the 3rd box 1000 ms from now, for a duration of 1000 ms
recs[2].showBriefly(1000, 1000);