关于Processing显示和动画对象分离地思路和实现

本文探讨了如何在Processing中将物体的显示与动画行为分离,以提高代码的可扩展性。通过创建更新对象集和使用抽象更新类,实现了在不修改原有代码的情况下对显示对象进行多种类型的动画更新。关键点包括:1) 显示对象调用更新对象的更新方法并传递自身引用;2) 显示对象维护一个抽象更新对象集;3) 更新对象能自我注册到显示对象的更新集合中。
摘要由CSDN通过智能技术生成


关于物体控制的程序框架

一般来说要控制物体的显示需要在类的内容对对象进行控制,但有时,我们希望把物体的行为与物体的显示分开,比如对物体进行动画处理。

这里我从对shapes3d库的习得来谈谈我自己的一些想法。

shapes3d库有专职动画的包,但其内容实现我也不太清楚,猜测是把对象的显示和动画行为分开到不同的类中实现的,由此我想如果在我自己的Processing程序中如何做到在显示对象的外部类中对显示对象作动画处理呢?

首先,动画是对象显示对象的不断更新来实现的,如位置、大小、形状等。因此,我只要能在显示之前更新显示对象的这些属性就可以了。
Processing的draw()函数是显示对象更新和绘制的主要场所,我可以把更新和绘制放在draw()函数中进行。绘制由显示对象自己负责,而更新则由专门的更新类负责了。关键是更新类如何确定更新的时机。如果每加入一个对显示对象的更新类型就要在draw()中添加代码肯定是不符合软件的可扩展性原则的,因为这修改了原程序的代码。
如何在不修改原程序的基础上来更新呢。首先显示对象的更新和绘制我都放在显示对象的同一个方法中updateDraw()。这样在draw()函数中只要调用显示对象的一个方法。但在显示对象的updateDraw()方法中不能由显示对象自己实现更新,而必须由更新对象进行更新。这就必须由更新对象在其内部对显示对象进行设置,而这又进一步要求显示对象要通知更新对象何时进行更新。如何通知呢?这就要有更新对象的引用,进而要求更新对象要通过注册regUpdate()方法把自己的引用放在显示对象里,而显示对象要对这些不同类型的更新对象进行抽象,并调用这个抽象对象的更新方法(update(显示对象))把显示对象传递给更新对象,以便更新对象对其进行更新操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值