关于Processing显示和动画对象分离地思路和实现
来源:互联网 发布:有秒杀软件吗 编辑:程序博客网 时间:2024/06/05 20:06
关于物体控制的程序框架
一般来说要控制物体的显示需要在类的内容对对象进行控制,但有时,我们希望把物体的行为与物体的显示分开,比如对物体进行动画处理。
这里我从对shapes3d库的习得来谈谈我自己的一些想法。
shapes3d库有专职动画的包,但其内容实现我也不太清楚,猜测是把对象的显示和动画行为分开到不同的类中实现的,由此我想如果在我自己的Processing程序中如何做到在显示对象的外部类中对显示对象作动画处理呢?
首先,动画是对象显示对象的不断更新来实现的,如位置、大小、形状等。因此,我只要能在显示之前更新显示对象的这些属性就可以了。
Processing的draw()函数是显示对象更新和绘制的主要场所,我可以把更新和绘制放在draw()函数中进行。绘制由显示对象自己负责,而更新则由专门的更新类负责了。关键是更新类如何确定更新的时机。如果每加入一个对显示对象的更新类型就要在draw()中添加代码肯定是不符合软件的可扩展性原则的,因为这修改了原程序的代码。
如何在不修改原程序的基础上来更新呢。首先显示对象的更新和绘制我都放在显示对象的同一个方法中updateDraw()。这样在draw()函数中只要调用显示对象的一个方法。但在显示对象的updateDraw()方法中不能由显示对象自己实现更新,而必须由更新对象进行更新。这就必须由更新对象在其内部对显示对象进行设置,而这又进一步要求显示对象要通知更新对象何时进行更新。如何通知呢?这就要有更新对象的引用,进而要求更新对象要通过注册regUpdate()方法把自己的引用放在显示对象里,而显示对象要对这些不同类型的更新对象进行抽象,并调用这个抽象对象的更新方法(update(显示对象))把显示对象传递给更新对象,以便更新对象对其进行更新操作。由于一个显示对象可能同时要进行多种更新操作,比如同时行旋转和移动操作,所以显示对象应该有一个更新对象(抽象类型为Update)集。
经过上面的过程,我就可以实现在不改变原有代码的基础上来对显示对象实现不同类型的更新操作,而且这种操作也可以是同时进行的。而实现这个功能的主要是显示对象在更新时把自己的引用传递给更新对象,由更新对象实现更新逻辑,而不是自己实惠更新逻辑。要想调用不同更新对象的方法,就要用到抽象类。要想同时实现不同类型的更新,显示对象就要维护一个更新对象集,要想把不同更新对象放在同一个更新对象集中就必须要用到抽象类。
好吧,看上去有点啰嗦,但只是想把思路搞清楚。这样一来,我就实现了显示逻辑和动画逻辑的分离,使得在不修改原有代码的基础上实现功能的扩充。
要点:
1、显示更新时机(显示对象更新方法->调用更新对象更新方法,并传递自己的引用)
2、显示对象维护一个抽象的更新对象集。
3、更新对象能够在显示对象的更新对象集中注册自己。
同样,显示对象添加到屏幕上,也可以采取注册到显示对象集的方法实现把自己显示在屏幕上,也能实现不动原有代码就可以扩充显示的内容的目的。
思路清楚了,下面就是实现啦。
- 关于Processing显示和动画对象分离地思路和实现
- 一个关于分页的数据和显示分离的设计
- 前端和后端分离开发思路
- 实现动画显示和关闭窗口
- qt实现界面显示和打印部分分离
- 关于页面和代码分离
- flex+BlazeDS关于军标的实现思路和算法
- C++ 具体和实现分离
- Java反射实现不同对象相同代码地对象查询和封装
- 实现自己的DialogBuilder封装:大小、显示位置和动画
- 关于 cvSlite 和cvMerge 实现图像的通道分离和混合的说明
- C++ 接口和对象分离的技术
- C++接口和对象分离的技术
- jQuery动画-隐藏和显示
- Activity显示和关闭动画
- 关于页面和代码分离的
- 关于IMSI附着和IMSI分离
- android 关于自定义解锁动画和实现全屏的解决方案
- 一张图解释Telnet和SSH
- C语言字符串转换成日期
- android手机号正则
- js迭代器迭代类数组和字面量对象
- Oracle database 11.2.0.4、12.1.0.2 和 12.2.0.1参数默认值改变
- 关于Processing显示和动画对象分离地思路和实现
- 设计模式之六大设计原则
- sql存储过程中处理json数据
- 获取JSONObject 中的属性并且转为String
- 2017美国数学建模MCM A题(连续型)翻译 管理赞比西河 Managing The Zambezi River
- PHP主动断开与浏览器的连接
- LeetCode——2. Add Two Numbers
- 计算Oracle数据库软件许可证License的使用量
- 【market】手机企业开拓印度市场的策略分析