我正在制作一个简单的游戏,我需要一些帮助才能改进我的代码
所以这是游戏:
一些方形显示并隐藏了几秒钟,你必须对它们进行陈词滥调。 我使用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);
我知道它看起来很糟糕......
我确信有一种方法可以使用切换,或者如果你能帮助我找到它就更喜欢这样做:)因为现在我必须为每个方块做到这一点... < /强>
非常感谢你的帮助。
答案 0 :(得分:1)
您尝试使用varName
加上一些i
来识别您想要的varName
的本能,并且JavaScript(与大多数语言一样)通过所谓的内置来构建 数组 。
一个简单的看起来像这样:
var foo = [1, 5, 198, 309];
使用该数组,您可以访问foo[0]
1
或foo[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);