首页 > 解决方案 > 我需要使用处理使这些给定的常量和变量一致地从一端滚动到另一端

问题描述

final int X_START = 1;
final int Y_START =250 ;
final int X_END =width ;
final int Y_END =250 ; 
final int SPEED_FACTOR = 5;

int xCenter= ;
int yCenter= ;

void setup(){
    size (500, 500) ;
}

void draw(){
    background(0);
    ellipse(xCenter, yCenter, 50, 50);
}

球必须从 xstart 移动到 xend 并返回并需要帮助计算

标签: processing

解决方案


首先,关于您发布的代码的一些注释(评论):

final int X_START = 1;
final int Y_START =250 ;
// you should either set this to be 500 or have it as non-final, but initialized in setup()
// because width will be zero before size() gets called
final int X_END =width ;
final int Y_END =250 ; 
final int SPEED_FACTOR = 5;
// values missing here
int xCenter= ;
int yCenter= ;

void setup(){
    size (500, 500) ;
}

void draw(){
    background(0);
    ellipse(xCenter, yCenter, 50, 50);
}

也许你的意思是这样的?

final int X_START = 1;
final int Y_START =250 ;
final int X_END =250 ;
final int Y_END =250 ; 
final int SPEED_FACTOR = 5;

int xCenter = 250;
int yCenter = 250;

void setup(){
    size (500, 500) ;
}

void draw(){
    background(0);
    ellipse(xCenter, yCenter, 50, 50);
}

仅此片段并不能说明您解决问题的尝试。有多种方法可以实现相同的目标,“滚球”听起来有点模棱两可。如果您的球是您绘制的白色椭圆,将其从一个位置移动到另一个位置而不旋转(滚动),则在视觉上将无法区分(例如,如果您的球以 90 度“滚动”,则无法从视觉上分辨出与球的区别“滚动”在 0 度)。

假设您想以每帧 5px 的速度将球从X_STARTY_START到移动X_ENDY_END您需要做的就是在每帧增加xCenteryCenter的值SPEED_FACTOR。要增加一个数量,您只需将该数量添加到现有值:

xCenter = xCenter + SPEED_FACTOR;

上面还有一个速记。请做同样的事情yCenter并尝试一下。请使用您对此答案的更新draw()实现写评论,最好使用速记版本。


推荐阅读