有什么办法可以刷新图部分使用“drawnow”?

5视图(30天)
我设计一个动画。我有许多不同的对象。他们中的一些人在图上移动。这就是为什么他们在每次迭代需要更新。其中一些是静止的。在这种情况下,它足以吸引他们只有一次。有什么方法可以使用 drawnow 刷新整个动画除了固定的人。如果不是,drawnow的替代方案是什么?

接受的答案

杰克
杰克 2023年3月26日
你好,
是的,你可以使用 drawnow 函数来刷新动画,但只更新需要更新的对象。实现这一目标的一个方法是通过跟踪对象是静止,哪些移动。
例如,您可以创建一个移动对象的列表和静止的对象的列表,然后更新只有在每个迭代中移动对象:
moving_objects =[其中obj1、methoda obj3];%的移动对象列表
stationary_objects = [obj4、obj5 obj6];%的静止的对象列表
animation_is_running
%更新移动对象
i = 1:长度(moving_objects)
update_object_position (moving_objects (i));%更新对象的位置
draw_object (moving_objects (i));%画出对象
结束
%刷新动画
drawnow;
结束
或者,您可以使用 函数直接更新移动对象的属性,不刷新整个动画每个时间:
moving_objects =[其中obj1、methoda obj3];%的移动对象列表
stationary_objects = [obj4、obj5 obj6];%的静止的对象列表
animation_is_running
%更新移动对象
i = 1:长度(moving_objects)
update_object_position (moving_objects (i));%更新对象的位置
集(moving_objects(我),“XData”new_xdata,“YData”,new_ydata);%更新对象数据
结束
%刷新动画
drawnow;
结束
这种方法可以更快更有效,因为它避免了每次刷新整个动画。

更多的答案(0)

类别

找到更多的在动画帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的