Javascript:计算余数不起作用?

时间:2015-12-11 23:36:46

标签: javascript jquery

我正在玩游戏,其中玩家/敌人有一个带有3个叠加的平衡杆。我试图做的是操纵第一个叠加层,使其按百分比完全越过栏。

示例:第一次叠加是敌人平衡的50%。然后进入另一个阶段'或者'州。然后,该叠加层消失,第二个叠加层被触发并开始减少。

条的宽度是200像素,所以我想要做的就是说,嘿,如果50%的敌人平衡消失,那么触发/动画第二个叠加。

我遇到的问题是剩余线。当我击中敌人说... 10平衡伤害200.它将给我适当的百分比和剩下适当的剩余。 但是一旦我达到50%,余数= 0!这就是该行或函数不再正常工作的地方,它打破了我想要做的设计模式。以下是控制台日志中的示例。

balanceCounter: function (character, boss){
    var percentage = Math.floor((boss.balance/200) * 100)
    var remain = 100 % percentage; // <--- This is not working properly
    console.log(percentage);
    console.log(remain);
    if (character.virtue == "hero"){ 
        if (percentage > 49){
        $("#bossbalanceoverlay2").animate({
            width: percentage * 2 - (remain * 2)
            }, 200)
        }
        else 
            $("#bossbalanceoverlay1").animate({
            width: percentage * 2 - (remain * 2)
            }, 200); 
        }


**click attack button**
97 // <--- Percent
3 // <--- Remainder

**click attack button**
95 // <--- Percent
5 // <--- Remainder

**click attack button**
92 // <--- Percent
8 // <--- Remainder

(When i hit the 50% mark)

**click attack button**
50 // <--- Percent
0 // <--- Remainder  **Why 0?**

**click attack button**
47 // <--- Percent
6 // <--- Remainder  **Why 6 instead of 3?**

**click attack button**
45 // <--- Percent
10 // <--- Remainder **Why 10 instead of 5?**

3 个答案:

答案 0 :(得分:2)

您可能希望这样做,而不是%

var remain = 100 - percentage;

你希望remain + percentage总是加起来100,所以这是你需要的减法,而不是模运算。

通常情况下,%(模数)在百分比为50时得到零,因为100是50的倍数,因此没有余数。

答案 1 :(得分:0)

你面临的问题是%返回余数。

100%45 =&gt;可被45整除两次,余数= 10.

100%50 =&gt;可被50整除两次,余数= 0。

你想要的是remain = 100 - percentage

答案 2 :(得分:-2)

对于初学者,我会添加缺少的分号。

其次看起来你的else括号缺少大括号{},这可能导致两个块被命中,具体取决于代码的格式化。

第三,我会阅读%运算符,你可能会过度思考它;)