这个功能发生了什么?

时间:2014-03-30 23:07:51

标签: javascript

代码:

this.moveLeft = function(speed)
    {
      speed *= -1; // Make speed a negative number
      this.move( speed, 0 );
    };
  this.moveUp = function(speed)
    {
      speed *= -1;
      this.move( 0, speed );
    };
 this.moveDown = function(speed)
    {
      this.move( 0, speed );
    };
 this.move = function( x, y ) 
    {

我是Javascript的新手并从游戏中获取了这段代码。我想知道每个职能部门的情况。如果我没有错,这里有4个函数,每个人都有一个参数。为什么左右移动是一个负数?而且,为什么零(0)改变其位置参数"速度"什么时候向左移动并向上移动?

4 个答案:

答案 0 :(得分:2)

  

如果我没有错,这里有4个函数,每个人都有参数。

正确,除了move需要两个参数(参数)。

  

为什么向左和向上移动是一个负数?

因为在浏览器中,页面上的坐标从页面左侧的0,0开始,向右移动时x会增加,向下移动时y会增加。所以移动"离开"减少x坐标,然后移动"向上"减少y坐标。

  

此外,为什么零(0)改变其位置参数"速度"什么时候向左移动并向上移动?

因为有两个坐标x(水平)和y(垂直)。 moveLeft向左移动(缩小水平,不改变垂直,因此垂直为0)。 moveUp向上移动(减少垂直而不改变水平,因此水平为0)。

答案 1 :(得分:2)

  

为什么向左和向上移动是一个负数?

因为游戏适用于"倒网格":

HTML canvas grid

因此,虽然你的直觉会说UP是正面的,但实际上它对这个网格系统是负面的。左边总是负数,即如果你在(3,0)并向左移动一个单位,你最终会进入(3 - 1,0)=(2,0)。

  

此外,为什么零(0)改变其位置参数"速度"什么时候向左移动并向上移动?

我不确定你的意思,但速度是你在一定时间间隔内移动的单位数。在我的例子中关于(3,0)=> (2,0),速度是" 1" (你移动一个单位)。

希望这是有道理的。

答案 2 :(得分:1)

我的猜测是this.move有两个参数:

  1. 第一个是向右移动的金额
  2. 第二个是向底部移动的金额
  3. 然后,

    • this.moveLeft-speed单位向右移动(即speed单位向左移动),0单位向下移动。
    • this.moveUp0单位向右移动,-speed单位向下移动(即speed单位向上移动。)
    • this.moveDown0单位向右移动,speed单位向下移动(即speed单位向上移动。)
      

    为什么向左和向上移动是一个负数

    因为将矢量乘以-1,你会得到一个长度相同但方向相反的矢量。

      

    为什么零(0)用参数" speed"改变它的位置什么时候向左移动并向上移动?

    因为这种方式,向量的标量积总是为0,即它们是垂直的。

答案 3 :(得分:0)

速度整数对应于"字符"的移动。因此,如果1是北,那么-1将是南。

因此,当传入具有x和y参数的move()函数时:

move(-1, 0)向左移动

move(1, 0)向右移动

move(0, -1)向南移动

move(0, 1)向北移动