繁体   English   中英

基本动画不会触发

[英]Basic animation doesn't fire

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

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM