Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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
Java 如何跟踪圆移动的帧数?_Java - Fatal编程技术网

Java 如何跟踪圆移动的帧数?

Java 如何跟踪圆移动的帧数?,java,Java,我使用jumpTime来跟踪经过的帧数,但我不知道如何计算它。然后我应该使用跳跃时间、跳跃持续时间和点跳跃来计算跳跃偏移。jumpOffset用于对x和y坐标进行加或减以使其移动。我将遇到问题的代码行加粗。jumpTime是一个计数器,用于存储当前经过的帧数和jumpOffset,jumpOffset是移动圆的变量。非常感谢您的帮助 final float SHORT_HAND = 150; final float LONG_HAND= 200; float longHandAngle = 0

我使用jumpTime来跟踪经过的帧数,但我不知道如何计算它。然后我应该使用跳跃时间、跳跃持续时间和点跳跃来计算跳跃偏移。jumpOffset用于对x和y坐标进行加或减以使其移动。我将遇到问题的代码行加粗。jumpTime是一个计数器,用于存储当前经过的帧数和jumpOffset,jumpOffset是移动圆的变量。非常感谢您的帮助

final float SHORT_HAND = 150;
final float LONG_HAND= 200;

float longHandAngle = 0;
float shortHandAngle = 0;

float longHandSpeed = 0.02;
float shortHandSpeed = 0.01;

final float DOT_SIZE = 20;
final float DOT_SPACING = 160;
final float DOT_JUMP = 180;

float flyX;
float flyY;

boolean isJumping;
boolean atTop;
boolean atLeft;
boolean jumpUp;
boolean jumpDown;
boolean jumpLeft;
boolean jumpRight;
int jumpTime;
final int JUMP_DURATION = 20;
float jumpOffset;
int flyJumpAdj = 5;


void setup()
{
 size(500,500);
 background(#24FF46);
 flyX = DOT_SPACING;
 flyY = DOT_SPACING;
}

void draw()
{
 drawHands();
 drawDots();
 moveHands();
 drawFly();
 moveFly();
}


void drawHands()
{
 strokeWeight(5);
 stroke(#FFC524);
 background(#24FF46);
 line(width/2,height/2,width/2 + cos(longHandAngle) * LONG_HAND,height/2 + sin(longHandAngle) * 
 LONG_HAND);
 line(width/2,height/2,width/2 + cos(shortHandAngle) * SHORT_HAND,height/2 + sin(shortHandAngle) * 
 SHORT_HAND);
}


 void drawDots()
{
 stroke(0);
 strokeWeight(1);
 fill(#24C6FF);
 circle(DOT_SPACING,DOT_SPACING,DOT_SIZE);
 circle(width - DOT_SPACING,DOT_SPACING,DOT_SIZE);
 circle(DOT_SPACING,height - DOT_SPACING,DOT_SIZE);
 circle(width - DOT_SPACING,height - DOT_SPACING,DOT_SIZE);
}


void moveHands()
{
 longHandAngle = (longHandAngle + longHandSpeed)%TWO_PI;
 shortHandAngle = (shortHandAngle + shortHandSpeed)%TWO_PI;
}

void drawFly()
{
 fill(255);
 circle(flyX,flyY,25);
}

void keyPressed()
{
 if(isJumping)
  {
    keyPressed = false;
  }
  if((flyX > DOT_SPACING && flyX < width-DOT_SPACING) || (flyY > DOT_SPACING && flyY < height- 
 DOT_SPACING) )
 {
   isJumping = true;
 } 
   if((flyX == DOT_SPACING || flyX == width - DOT_SPACING) && (flyY == DOT_SPACING || flyY == height 
- DOT_SPACING))
   {
     jumpTime = 0;
     isJumping = false;
   }
  if(key == CODED){
  if(keyCode == DOWN)
  {
    jumpDown = true;

  }
  if(keyCode == UP)
  {

   jumpUp = true;
  }
  if(keyCode == LEFT)
  {

    jumpLeft = true;
  }
  if(keyCode == RIGHT)
  {

    jumpRight = true;
  }
}
} 




void moveFly()
{
  setOffset();
  **jumpTime = jumpTime + 1 % JUMP_DURATION;**

  if(flyY == DOT_SPACING)
  {
    atTop = true;
  }
  if(flyX == DOT_SPACING)
  {
    atLeft = true;
  }

  if(atTop)
  {
    jumpUp = false;
  }
  if(atLeft)
  {
    jumpLeft = false;
  }


  if(atTop && atLeft == false)
  {
    jumpRight = false;
  }
  if(atTop == false && atLeft)
  {

    jumpDown = false;
  }
  if(atTop == false && atLeft == false)
  {
    jumpDown = false;
    jumpRight = false;
    jumpLeft = true;
    jumpRight = true;
  }

  if(jumpRight && flyX >= DOT_SPACING && flyX < width - DOT_SPACING)
  {
    flyX += jumpOffset;
  }
   if(jumpLeft && flyX >= DOT_SPACING && flyX <= width - DOT_SPACING)
  {
    flyX = flyX - flyJumpAdj - flyJumpAdj;
  }
  if(jumpUp && flyY > DOT_SPACING && flyY <= height - DOT_SPACING)
  {
    flyY -= flyJumpAdj;
  }
  if(jumpDown && flyY >= DOT_SPACING && flyY < height - DOT_SPACING)
  {
    flyY += jumpOffset;

  }

}
void setOffset()
{

  **jumpOffset = (jumpTime + 9)%DOT_JUMP;**
}
final float SHORT\u HAND=150;
最终浮动长手=200;
浮动长柄角=0;
浮动短手角度=0;
浮动长手速度=0.02;
浮球速比=0.01;
最终浮动点_尺寸=20;
最终浮动点间距=160;
最终浮点数跳=180;
浮动flyX;
浮蝇;
布尔跳跃;
布尔阿拓;
布尔atLeft;
布尔跳跃;
布尔跳下;
布尔左跳;
布尔右键;
整数跳时;
最终整数跳跃持续时间=20;
浮动跳线偏移;
int flyJumpAdj=5;
无效设置()
{
尺寸(500500);
背景(#24FF46);
flyX=点间距;
flyY=点间距;
}
作废提款()
{
拉手();
drawDots();
移动双手();
蜻蜓();
moveFly();
}
无效拉手()
{
冲程重量(5);
冲程(#FFC524);
背景(#24FF46);
线条(宽度/2,高度/2,宽度/2+cos(长臂角度)*长臂,高度/2+sin(长臂角度)*
长手);
线条(宽度/2,高度/2,宽度/2+cos(速记角度)*速记,高度/2+sin(速记角度)*
短手);
}
void drawDots()
{
冲程(0);
冲程重量(1);
填充(#24C6FF);
圆(点间距、点间距、点大小);
圆(宽度-点间距、点间距、点大小);
圆(圆点间距、高度-圆点间距、圆点大小);
圆(宽度-圆点间距,高度-圆点间距,圆点尺寸);
}
无效移动指针()
{
longHandAngle=(longHandAngle+longHandSpeed)%TWO\u PI;
速记角度=(速记角度+速记速度)%TWO\u PI;
}
void drawFly()
{
填充(255);
圆圈(flyX,flyY,25);
}
按下void键()
{
如果(正在跳跃)
{
按键=假;
}
如果((flyX>点间距和&flyX<宽度-点间距)| |(flyY>点间距和&flyY<高度-
点(U间距)
{
isJumping=true;
} 
如果((flyX==点间距| | flyX==宽度-点间距)和&(flyY==点间距| | flyY==高度
-点(U间距)
{
跳跃时间=0;
isJumping=false;
}
如果(键==编码){
如果(键代码==向下)
{
跳下=真;
}
if(keyCode==UP)
{
jumpUp=true;
}
if(keyCode==左)
{
jumpLeft=true;
}
if(keyCode==右)
{
jumpRight=true;
}
}
} 
void moveFly()
{
setOffset();
**跳跃时间=跳跃时间+1%跳跃持续时间**
如果(飞边==点间距)
{
阿托普=真;
}
如果(flyX==点间距)
{
atLeft=真;
}
if(atTop)
{
跳升=假;
}
如果(atLeft)
{
jumpLeft=false;
}
if(atTop&&atLeft==false)
{
jumpRight=false;
}
if(atTop==false&&atLeft)
{
跳下=错误;
}
if(atTop==false&&atLeft==false)
{
跳下=错误;
jumpRight=false;
jumpLeft=true;
jumpRight=true;
}
如果(jumpRight&&flyX>=点间距和&flyX<宽度-点间距)
{
flyX+=跳线偏移;
}
if(jumpLeft&&flyX>=点间距&&flyX点间距&&flyY=点间距&&flyY<高度-点间距)
{
flyY+=跳跃偏移;
}
}
void setOffset()
{
**跳跃偏移=(跳跃时间+9)%DOT\u跳跃**
}