1

我将在 XPCE 中编写一个简单的动画(准确地说是四眼镜拼图)。我对 XPCE 一无所知,所以我查阅了一个教程,但结果令人失望。谁能指出我在以下方面的一些材料:

  • 使用“画布”
  • 动画片
  • 计时器

编辑:好的,这里有一个更详细的问题:我想画两个盒子,等待两秒钟,隐藏盒子,然后启动一个计时器。

new(@box1, box(100,100)),
send(W, display, @box1),
new(@box2, box(100,100)),
send(W, display, @box2, point(200, 200)),

% wait two seconds here
% hide the boxes here

new(Msg1, and(message(B1, relative_move, point(5, 0)),
              message(B4, relative_move, point(0, 5)))),
send(W, attribute, attribute(timer, new(T, timer(0.1, Msg1)))),

send(T, start),

编辑2:好的,这是另一个问题(我应该打开一个新问题吗?):这是我正在使用的代码:

get_file(0, 'glass.gif').
get_file(180, 'glass180.gif').

main(GA, GB, GC, GD) :- % e.g. main(0,0,180,0).
    new(B1, figure),
    get_file(GA, G1),
    send(B1, display, new(BM1, bitmap(G1))),
    send(BM1, transparent, @on),
    send(W, display, B1, point(0,0)),     

%analogically for the other three glasses

我想为B1. 我怎么做?改造BM1就够了吗?或者也许有替代解决方案?我一直在考虑在屏幕外画出直立和倒置的眼镜并交换它们,但我不确定这种解决方案的细节。

EDIT2':解决了。为后代:

send(B1, clear),
send(B1, display, bitmap('glass_while_animating_1.gif')),
send(timer(0.1), delay),
send(B1, clear),
send(B1, display, bitmap('glass_while_animating_2.gif')),
% etc
4

1 回答 1

0

这个可搜索的pdf会有所帮助吗?

链接文本

“第 5 章。简单图形”讨论图片(即画布)。

在第 260 页上有一个使用计时器来引入延迟的示例,第 266 页显示了使用计时器来实现闪烁图形。

在第 40 页上提到了使用 'graphical->flush' 来显式地强制重绘现在。

于 2011-01-20T22:55:17.203 回答