2013-04-25 74 views
0

我是新的画布。我是一名正在开发帆布赛跑运动员的学生。我有功能jump(),这是在发生事件时调用的;HTML5游戏跳转()函数无法正常工作

function jump(){ 
    img= new Image(); 
    //is_jump=1; 
    h.clearRect(20,430,170,250); 
    img.onload= function(){ 
     //h.drawImage(img,mx,my,190,280,120,410,190,350); 
     h.drawImage(img,mx,my,190,350); 
     //mX--; 
     //mY--; 
    } 
    img.src= "mario-Copy.png"; 
    h.clearRect(mx,my,190,350); 
    //for(i=mx;i<130;i+=7) 
    //{ 
    if(mx<110&&my<480){ 
     mx=(mx+5); 
     my=(my-15); 
     //setTimeout(h.drawImage(img,mx,my,190,350),100000/5); 
     h.drawImage(img,mx,my,190,350); 
    }else{ 
     mx=60; 
     my=410; 
    } 
} 

的问题是,跳跃的字符不能正常工作,它跳慢点,不要清除以前的跳跃状态图像,而前进。

所以帮助我,让我的动画正常顺利地运作。

目标是通过点击使角色跳跃。

+4

有了互动内容/游戏,发布一个简单的代码片段(它可以自己运行)几乎是最好的办法(http://sscce.org)。如果我们无法为一般场景重现此问题,则可能是本地化的问题。但是对于其中之一,你不应该为每次跳转加载'mario-Copy'。而是加载图像_once_并重新使用它。 – Zeta 2013-04-25 10:45:47

+0

你能否解释各种魔法数字(如190和350)在你的代码中的重要性?最好的做法是[用一个明显命名的常量代替那些实际表示数字的意思](http://www.refactoring.com/catalog/replaceMagicNumberWithSymbolicConstant.html)。魔法数字[你的代码不好](http://stackoverflow.com/q/47882/254830)。 – doppelgreener 2013-04-26 02:26:47

+0

@Jonathan Hobbs,“190和350”是指跑步者字符的宽度和高度,在上面的代码中h.clearRect(20,430,170,250);意思是h.clearRect(x,y,w,h); mx表示跑步者的x轴,我的意思是他的y轴。 – 2013-09-05 21:45:22

回答

0

我认为问题在于你正在清理和重画同一个跳转函数。我会做的是创建一个单独的绘制()和清除()并把它们放在一个setinterval并让它运行。然后,所有的跳转函数都需要更新对象的位置,您可以直接通过跳转()来改变位置,或者在绘制之前使用单独的update()函数来编辑这些值。