Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 大学项目:设置超时问题_Javascript - Fatal编程技术网

Javascript 大学项目:设置超时问题

Javascript 大学项目:设置超时问题,javascript,Javascript,我在意大利比萨学习信息工程,我的考试之一是创建一个web服务。我的选择是一个用Javascript编写的小游戏。有一款基于flash的游戏叫做“Hobo”,它和我的类似。我的问题是: 我必须创建一个函数来恢复敌人的空闲动画。我需要在另一个函数(attackfunction)中调用此函数。restore\u idle\u gif函数设置了一个setTimeout在800毫秒后恢复原始动画,但我遇到了以下问题:如果有超过1个敌人,该函数将恢复最后一个攻击的敌人的动画 代码是: function en

我在意大利比萨学习信息工程,我的考试之一是创建一个web服务。我的选择是一个用Javascript编写的小游戏。有一款基于flash的游戏叫做“Hobo”,它和我的类似。我的问题是:

我必须创建一个函数来恢复敌人的空闲动画。我需要在另一个函数(
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循环中运行?这通常会导致影响循环中最后一项而不是预期项的事情。