你好我用一个小动画做了掷骰子功能,但最后我有一个问题因为cuz动画doent到最后:
function read_stdinSync() {
var b = new Buffer(1024)
var data = ''
while (true) {
var n = fs.readSync(process.stdin.fd, b, 0, b.length)
if (!n) break
data += b.toString(null, 0, n)
}
return data
}
所以我死了(1-6).png女巫用来表示女巫号码已经生成,我有动画(1-8).png女巫用于动画。
所以在内部区间我生成1-8之间的随机数然后将diece1和diece2 src属性更改为动画生成一切顺利,但在动画结束时#34; num"达到60我想将diece1和diece2 src设置为d1或d2中的一个随机生成到1-6然后调用结果图像
但最后我得到了最后一个动漫形象,而不是结果图像更清晰我有动漫(1-8).png而不是死(1-6).png和我之前被提及动漫pngs是为animate和die pngs是结果,我得到最后生成的动漫png一个间隔停止我试图在区间之外改变src但结果是相同的
答案 0 :(得分:3)
虽然您已经清除了间隔,但它仍会完成最后一次运行,这将导致您的骰子再次出现动画图像。
您唯一需要做的就是在else
语句中添加if
,如下所示:
if(num == 60){
diece1.src = "die" + d1 + ".png";
diece2.src = "die" + d2 + ".png";
clearInterval(interval);
}else{
diece1.src = "anim" + num1 + ".png";
diece2.src = "anim" + num2 + ".png";
}
希望这有帮助
答案 1 :(得分:2)
更改
if(num == 60){
diece1.src = "die" + d1 + ".png";
diece2.src = "die" + d2 + ".png";
clearInterval(interval);
}
diece1.src = "anim" + num1 + ".png";
diece2.src = "anim" + num2 + ".png";
到
if(num == 60){
diece1.src = "die" + d1 + ".png";
diece2.src = "die" + d2 + ".png";
clearInterval(interval);
} else {
diece1.src = "anim" + num1 + ".png";
diece2.src = "anim" + num2 + ".png";
}
目前最后两行覆盖最终输出阶段。
答案 2 :(得分:0)
if(num < 60){//Rolling dice
diece1.src = "anim" + num1 + ".png";
diece2.src = "anim" + num2 + ".png";
} else { //Results pair up?
diece1.src = "die" + d1 + ".png";
diece2.src = "die" + d2 + ".png";
diece1.src = "anim" + num1 + ".png";
diece2.src = "anim" + num2 + ".png";
clearInterval(interval);
}
那怎么样?