Javascript 大学项目:设置超时问题
我在意大利比萨学习信息工程,我的考试之一是创建一个web服务。我的选择是一个用Javascript编写的小游戏。有一款基于flash的游戏叫做“Hobo”,它和我的类似。我的问题是: 我必须创建一个函数来恢复敌人的空闲动画。我需要在另一个函数(Javascript 大学项目:设置超时问题,javascript,Javascript,我在意大利比萨学习信息工程,我的考试之一是创建一个web服务。我的选择是一个用Javascript编写的小游戏。有一款基于flash的游戏叫做“Hobo”,它和我的类似。我的问题是: 我必须创建一个函数来恢复敌人的空闲动画。我需要在另一个函数(attackfunction)中调用此函数。restore\u idle\u gif函数设置了一个setTimeout在800毫秒后恢复原始动画,但我遇到了以下问题:如果有超过1个敌人,该函数将恢复最后一个攻击的敌人的动画 代码是: function en
attack
function)中调用此函数。restore\u idle\u gif
函数设置了一个setTimeout
在800毫秒后恢复原始动画,但我遇到了以下问题:如果有超过1个敌人,该函数将恢复最后一个攻击的敌人的动画
代码是:
function enemy_class ( ..... )
{
// Variables
// Methods
this.attack_method = attack_fun ;
this.move_method = move_fun ;
// Movement timer and Attack Cooldown ( they works as i wanted )
this.move_timer=setInterval(this.move_enemy.bind(this),( 1000/this.movement_speed));
this.attack_timer=setInterval(this.attack_enemy.bind(this),( 1000/this.attack_speed));
}
function attack_fun()
{
// Some stuff that we don't need for my problem
if ( chance_of_attack == true )
{
nemico = document.getElementById( this.get_enemy_id() );
nemico.setAttribute( "src", "Media/images/enemy_attack.gif" ) ;
damage_hero ( this ) ;
restore_idle_gif( this ) ;
}
}
function damage_hero( that )
{
// works
}
最后是邪恶的功能,它让我神魂颠倒:
function restore_idle_gif( nemico_che_attacca )
{
var restore_timer = setTimeout ( function() { var restore = document.getElementById( nemico_che_attacca.get_enemy_id() ) ; restore.setAttribute ( "src", "Media/images/enemy.gif" ) ; } , 800 ) ;
}
除了这个“小故障”,代码的其余部分工作正常。我真的需要它来工作,因为我需要为所有剩余的动画创建代码。请帮助我使用该代码或给我一些想法/替代解决方案。对不起,我的英语不好,文本格式不好,这是我第一次使用Stackoverflow。在
攻击乐趣中
我看到您使用document.getElementById(this.get\u敌方id())选择攻击敌人。
。在restore\u idle\u gif
中,您切换到document.getElementById(nemico\u che\u attacca.get\u敌方\u id())
。应该是吗。取而代之的是获取敌人id()
?对不起,我的问题错了,我在代码中使用了“nemico\u che\u attacca”广告参数!还要注意的是:在询问有关堆栈溢出的问题时(欢迎!),创建一个新的代码集被认为是很好的做法!从你提供的gode示例中很难说,但每当我读到诸如“该函数恢复最后一个攻击敌人的动画”之类的短语时,我就会想到关闭问题。在这些示例之前,您是否有一些逻辑正在for循环中运行?这通常会导致影响循环中最后一项而不是预期项的事情。