回调将是最简单的方法,但由于您不想使用回调(jQuery.queue()
确实需要 - 嗯......无论如何都是递归回调),您可以让您拥有的方法返回一个布尔值:
$('button').click(function()
{
var theObjects = [a,b,c,d];
for (var i=0;i<theObjects.length;i++)
{
if (theObjects[i].makeStuffHappen() === false)
{
break;//or throw, or whatever...
}
}
});
当然,方法很可能会根据调用的对象而有所不同。您可以通过使用对象而不是数组来解决此问题,在这种情况下,您的事件处理程序可能类似于:
$('button').click(function()
{
var theObjects = {a:'aMethod',b:'bMethod',c:'cMethod'};
for(var i in theObjects)
{
if (theObjects.hasOwnProperty(i))
{
if(window[i][theObjects[i]]() === false)
{
break;//or throw, or return...
}
}
}
});
请注意,我不知道你为什么不想在这里使用某种形式的回调,因为这将是最简单的方法......但这当然不是我关心的...... :- )
好吧,快速浏览一下你的游戏……看起来很有趣,继续努力吧:)。顺便说一句,您离在所有地方使用回调仅一步之遥:
$('#placeBet').click(function() {
placeBet();
});
可以写成:
$('#placeBet').click(placeBet);
在后者中,placeBet 是一个回调函数。我认为您主要关心的是:
player.printHand();
dealer.printHand(isDealerHidden);
我在这里要做的是更改 printHand 函数,方法是在末尾添加:
if (this.name !== 'dealer')
{
dealer.printHand(isDealerHidden);
}
我没有阅读足够多的脚本来使这项工作按您的需要进行,但是您明白了……更简单的方法是不明确地为经销商设置动画,而是更改玩家手上的所有动画师以结束一些在玩家动画完成后动画经销商的代码......我知道,我在胡说八道,但我在工作......而且生病了......无论如何,祝你好运。我可能会花更多时间检查您的进度,也许今晚更仔细地阅读您的脚本并将此运球编辑为实际可行的内容:-)