gpt4 book ai didi

c++ - 基本动画不触发

转载 作者:行者123 更新时间:2023-11-30 03:55:25 25 4
gpt4 key购买 nike

我正在尝试按照此示例创建动画:

http://seriss.com/people/erco/fltk/#Animate

除了我移动它而不是改变图像这一事实。有一个汽车图像应该每半秒向右下方移动 10 次:

void func(void* data)
{
static int counter=0;
counter++;
Fl_PNG_Image* image= static_cast<Fl_PNG_Image*>(data);
Fl_Box* box= new Fl_Box(counter*10, counter*10,100,100);
box->image(image);
//delete box;
window->redraw();
if(counter==10)
{
Fl::remove_timeout(func,data);
}
else
{
Fl::repeat_timeout(.5,func,data);
}
}

int main(int argc, char **argv)
{
window = new Fl_Double_Window(width, height);

Fl_PNG_Image* image= new Fl_PNG_Image("car-down.png");
Fl_Box* box= new Fl_Box(0,0,100,100);
box->image(image);
Fl::add_timeout(.5, func, image);
//delete box;

window->end();
window->show(argc, argv);
return Fl::run();
}

我有两个问题:

  1. 我不明白什么时候应该删除该框。我正在用它来绘制图像,如果我在绘制图像后立即删除它,图像就会消失。
  2. 图片不会移动,始终停留在初始位置。

最佳答案

不是创建新的框和图像,而是移动框。窗口关闭时框将被删除

void func(void* data)
{
static int counter=0;
counter++;
//Fl_PNG_Image* image= static_cast<Fl_PNG_Image*>(data);
Fl_Box* box= static_cast<Fl_Box*) data;
box->position(counter*10, counter*10);
window->redraw();
...
}

int main(int argc, char **argv)
{
...

Fl::add_timeout(.5, func, box);

window->end();
window->show(argc, argv);
return Fl::run();
}

关于c++ - 基本动画不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com