CEGUI0.6特效调度功能接口
来源:互联网 发布:linux sleep 毫秒 编辑:程序博客网 时间:2024/05/02 16:08
新功能-窗口特效调度
为了使用Gui脚本模块, 今天某人把CNB整个底层GUI组件全部升级到0.6了.... 也重新编译了ogre的CEGUI渲染器...
在浏览代码时发现了0.6增加了一个不错的新功能接口----特效调度器(GUI.EffectScheduler)
虽然这个功能还没有被正式支持, 但是已经有个接口原型了... 下面我们就来对这个接口做一个简单地预览吧~
未实现的特效接口
如果你仔细观察下CEGUI0.6的头文件目录.. 会发现include目录增加了一个CEGUITask.h的文件, 但是这样文件并没有被包含到CEGUI外部暴露接口中, 同时也没有被实现... 这就是说明这个功能在完善中...
代码演示
那么让我们来看一下具体的接口代码吧, 打开CEGUITask.h...
class CEGUIEXPORT Task
{
public:
Task(bool destroy = true):d_destroyOnComplete(destroy);
~Task();
/**
* Actual code to be run when the task is called.
* /param elapsed Amount of time since last frame update
* /return
*/
virtual bool run(float elapsed) = 0;
protected:
bool d_destroyOnComplete; //!< Does this task destory itself once it completes?
};
上面的CEGUI::Task类提供了一个调度任务的接口, 你可以通过这个接口派生出自己的具体任务类, 在CEGUI中, 这些任务被称为特效, 如: 淡入淡出, 抖动, 旋转等, 想一想3D桌面中窗口中的那些特效....
关于GUI特效调度的应用
一个特效任务在执行时将被添加特效调度器中, 而你可以为特效指定时间, 延迟等细节, 当完毕后它将被移除调度队列, 你也可以选择在特效结束后销毁该特效, 或者让改特效按一定的间隔时间执行...
你可以让你的HUD在每隔3秒抖一次...
又或者血槽在接近零界点后不停地执行闪动特效等.... 当补血操作完成后这个特效就被移除调度, 所以自然闪动就停止了...
那么让我们来看一下CEGUI对应具体特效的实现吧...
class CEGUIEXPORT WidgetFadeTask : public Task
{
public:
enum eFadeDirection
{
FADEDIR_IN = 0,
FADEDIR_OUT = 1
}
WidgetFadeTask(Window* widget,eFadeDirection fadedir, float targetalpha, bool destroy = true):Task(destroy){};
/**
* Overridden from base task class -- Does the actual fading on the window.
* /param elapsed Amount of time since the last frame update
* /return True on success
*/
virtual bool run(float elapsed);
protected:
eFadeDirection d_fadeDirection; //!< Dictates which direction we are fading (in or out)
float d_targetAlpha; //!< What alpha are we fading to/from?
Window* d_widget;//!< what widget are we affecting?
};
WidgetFadeTask类
同样被放置在CEGUITask.h文件, 要注意的是当前这个类并没有被实现...
当特效被构建后, 我们需要为特效指定一个作用目标, 在CEGUI里这个目标就是CEGUI的基本原语--窗口(CEGUI::Window)...
在淡入淡出特效中, 同时你还要为特效指定一些参数...
如: 淡入还是淡出(fadedir
), 已经被执行特效后的目标透明度(targetalpha
),
比如我可以做一个小淡出让窗口消失(当前->0%), 或者让窗口在一定的透明度区间内上下抖动, 体现一种状态效果(比如玩家HUD中了某个特殊状态)...
结论
CEGUI 0.6中提供了新的特效调度接口, 但是还没有正式支持, 估计在0.7发布的时候CEGUI就会支持良好的窗口特效扩展...让我们拭目以待吧=_=|||
PS: 嘛...或许去CEGUI的SVN上Check Out下能有新发现...
- CEGUI0.6特效调度功能接口
- 构建Ogre1.6 + CEGUI0.7.1 + CELayoutEditor0.7.1
- 【转】构建 ogre1.6 + cegui0.7.1 + CELayoutEditor-0.7.1
- ATL IDispatch调度接口
- 任务调度功能
- [MFC]ATL IDispatch调度接口
- COM---调度接口与自动化
- 编译CEGUI0.7.1
- CEGUI0.7.5 的配置
- CEGUI0.7.5 的配置
- vs2005编译cegui0.6.2
- vs2013+cegui0.8.3编译
- CEGUI0.8.4支持中文
- 网页脚本运行代码功能特效
- js特效功能脚本使用大全
- JavaScript小特效---全选功能的实现
- 波纹扩散特效(仿支付宝咻一咻功能)
- CEGUI0.7.1字体优化草案
- vlan
- eclipse扩展点介绍 (转)
- ccna考试常用命令
- 北邮OJ上的题目——1001
- linux 内核之旅
- CEGUI0.6特效调度功能接口
- 有一首歌《在路上》
- ubuntu9.10安装wine
- ExtJS基础框架
- 常用的网络协议
- web developer tips (76):在设计视图隐藏非可视控件
- 谷歌走了
- devexpress的GridControl控件实时保存数据到DataSource
- 安装 Ubuntu 9.10 服务器版本系统全过程