Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Processing 图形图像处理中的抖动_Processing - Fatal编程技术网

Processing 图形图像处理中的抖动

Processing 图形图像处理中的抖动,processing,Processing,在此草图中,它水平绘制对象列表。每个对象的x位置取决于其左侧的对象。当对象不在屏幕上时,它也不会绘制。但是,当我移动时,对象会抖动。我真的不知道为什么,这可能是因为处理的加载图像需要一点时间,所以有轻微的延迟?我只是用绘制矩形(rect())来测试这一点,但问题没有发生 以下是使用相同算法绘制从internet加载的图像的代码:(草图加载可能需要一段时间,因为它正在从不同网站检索图像)运行草图后,使用左右箭头键向左和向右移动。使用向上和向下箭头更改移动速度 PImage背景图像; 字体; in

在此草图中,它水平绘制对象列表。每个对象的x位置取决于其左侧的对象。当对象不在屏幕上时,它也不会绘制。但是,当我移动时,对象会抖动。我真的不知道为什么,这可能是因为处理的加载图像需要一点时间,所以有轻微的延迟?我只是用绘制矩形(rect())来测试这一点,但问题没有发生

以下是使用相同算法绘制从internet加载的图像的代码:(草图加载可能需要一段时间,因为它正在从不同网站检索图像)运行草图后,使用左右箭头键向左和向右移动。使用向上和向下箭头更改移动速度

PImage背景图像;
字体;
int x=0;
int xoffset=0;
int deltax=5;
浮动比例=512/30;
浮点数deltascale=0.02;
ArrayList对象列表;
类对象{
字符串名;
浮子直径;
弦单元;
弦精灵;
皮马杰;
int wid;
英平;
int XPO;
对象(字符串Oname、浮点Odiameter、字符串Ounit、字符串Oimg){
name=Oname;
直径=直径计;
单位=盎司;
img=载荷图像(Oimg);
雪碧=Oimg;
//img=载荷图像(Oimg);
wid=img.宽度;
hei=img.高度;
}
}
无效设置(){
尺寸(1500800);
帧率(200);
填充(255255);
文本大小(32);
textAlign(居中,居中);
文本(“正在加载图像(这可能需要一段时间)”,700400;
ObjectList=新的ArrayList();
readObjects();
}
void addObject(字符串Aname、float Adiameter、字符串Aunit、字符串Aimg){
添加(新对象(Aname、Adiameter、Aunit、Aimg));
}
void readObjects(){
添加对象(“红色”,30,“米”https://s-media-cache-ak0.pinimg.com/736x/8f/1b/cc/8f1bcc72c81d1e9370597f7239ee476a.jpg");
//添加对象(“橙色”,60,“米”http://6iee.com/data/uploads/36/489075.jpg");
添加对象(“黄色”,70,“米”https://i.stack.imgur.com/aez1V.jpg");
添加对象(“绿色”,100,“米”http://space-facts.com/wp-content/uploads/mars.jpg");
添加对象(“紫色”,105,“m”http://space-facts.com/wp-content/uploads/jupiter.png");
添加对象(“粉红”,110,“米”https://vignette1.wikia.nocookie.net/starwars/images/4/4a/Alderaan.jpg");
添加对象(“棕色”,150,“米”https://cdn.pixabay.com/photo/2013/07/12/16/33/venus-151142_960_720.png");
添加对象(“灰色”,180,“米”http://www.lpi.usra.edu/lpi_40th/images/1989/neptune.jpg");
//添加对象(“白色”,200,“米”http://www.clipartkid.com/images/19/log-in-sign-up-upload-clipart-Dpr48a-clipart.png");
addObject(“靛蓝”,300,“米”https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Sun_in_February.jpg/155px-Sun_in_February.jpg");
addObject(“天蓝色”,301,“m”https://upload.wikimedia.org/wikipedia/commons/e/ea/Uranus_(编辑)(jpg);;
添加对象(“蓝色”,1000,“米”https://vignette2.wikia.nocookie.net/heman/images/3/36/Earth.jpg");
}
作废提款(){
填充(0,0,0);
rect(0,0,1500,800);
int x=0+xoffset;
对于(对象drawObject:ObjectList){
浮动直径=drawObject.diameter;
如果(x+drawObject.img.width>=0&&x 0&&drawHeight>0){
drawObject.img.resize(drawWidth、drawHeight);
图像(drawObject.img,x,400-(drawObject.img.height/2));
//计算相对于对象当前大小的字体大小
int文本大小;
//检查名称或直径是否较长,然后使用较长的名称或直径进行计算
填充(255255);
if(drawObject.name.length()0){
textSize(textSize);
float texty=418+(drawObject.img.height/2);
如果(文本<(418+(drawObject.img.height/2))){
texty=418;
}
text(drawObject.name,x+(drawObject.img.width/2),texty);
text(drawObject.diameter+drawObject.unit,x+(drawObject.img.width/2),texty+textSize);
}
}
drawObject.xpos=x;
x+=(drawObject.img.width*0.08+drawObject.img.width);
}
//显示deltax
文本大小(32);
文本(str(deltax),1450,10);
文本(str(deltascale),1450,50);
println(str(量表));
}
}
作废鼠标滚轮(鼠标事件){
float e=event.getCount();
if(e<0){
比例*=(1+三角洲比例);
}如果(e>0),则为else{
比例*=(1-三角洲比例);
}
}
按下void键(){
如果(键==编码){
if(keyCode==左){
xoffset+=代尔税;
}else if(keyCode==右){
xoffset-=deltax;
}else if(keyCode==UP){
deltax+=5;
}else if(keyCode==向下){
deltax-=5;
}
}
如果(键=='r'){
//重载对象();
}else if(键=='q'){
deltascale+=0.02;
}否则如果(键=='a'){
deltascale-=0.02;
}
如果(deltax<0){
deltax=0;
}else if(deltascale<0){
deltascale=0;
}
}
下面的原始代码将不起作用,因为它使用的图像只有我有

我希望有人能帮助我解决这个错误,或者帮助我改进我的算法。
编辑:代码现在是可验证的,并显示了我遇到的问题。好吧,我注意到每当你的一幅图像要离开屏幕的左边缘时,图像就会跳转。看起来,当你的每幅图像都离开屏幕时,你可能会以不同的方式计算x位置。如果需要,请尝试摆脱你的
(x+drawObject.img.width>=0&&x请发布一篇演示问题的文章。正如您所说,您发布的代码没有显示问题,因此帮助调试会有点困难。此外,您确实应该尝试格式化您的代码-处理编辑器甚至会为您这样做。还有一件事:您确实不应该使用类名d
对象
,因为已经有了Java cl