有什么办法可以刷新图部分使用“drawnow”?
5视图(30天)
显示旧的评论
接受的答案
杰克
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;
结束
这种方法可以更快更有效,因为它避免了每次刷新整个动画。