【v2.x OGE教程 16】 Modifier使用相关

OGE引擎的修改器功能很强大,为我们提供了丰富的修改器的实现类,可以修改实体的属性,提供了移动、旋转、缩放、透明、自定义序列、同步、循环等功能,而且改变的效果可以当场生效,也可以在某一个时间段内生效并且可以提供一些缓动函数达到更加丰富的效果。

一、Modifier创建

使用实例:


IEntity ball=new Sprite(0,0,ballRegion,this.getVertexBufferObjectManager());

MoveXModifier moveModifier = new MoveXModifier(0.5f,-ball.getWidth(),0);

ball.registerEntityModifier(moveModifier);

AlphaModifier:控制alpha变化的修改器

ScaleModifier:控制缩放变化的修改器

RotationModifier:控制旋转变化的修改器

ColorModifier:控制颜色变化的修改器

LoopEntityModifier:装载一个或多个IEntityModifier的循环修改器

SequenceEntityModifier:装载一个或多个IEntityModifier的顺序修改器

ParallelEntityModifier:装载一个或多个IEntityModifier的同步修改器(例:同时对一个Entity放大并旋转)

......

二、EaseFunction使用(缓动函数)


IEntity ball =new Sprite

(0,0,ballRegion,this.getVertexBufferObjectManager());

MoveXModifier moveModifier = new MoveXModifier

(0.5f,-ball.getWidth(),0,EaseBackInOut.getInstance());

ball.registerEntityModifier(moveModifier);

在创建Modifier的构造函数中,有个IEaseFunction接口,填入EaseXXX.getInstance();

三、Modifier注册

当需要使用Modifier时需要调用Entity.registerEntityModifier(final IEntityModifier pEntityModifier)方法进行注册。

四、Modifier反注册

在BaseModifier<T>中有一个域autoUnregisterWhenFinished,默认是true,代表Modifier运行完就自动反注册,手动反注册是调用Entity.unregisterEntityModifier(final IEntityModifier pEntityModifier)。

五、Modifier监听

Modifier构造函数中IEntityModifierListener代表Modifier监听

//Modifier开始时

public void onModifierStarted(final IModifier<T> pModifier, final T pItem);

//结束Modifier时

public void onModifierFinished(final IModifier<T> pModifier, final T pItem);

六、Modifier管理

在Entity中,EntityModifierList是管理当前Entity的Modifier列表,其实质是个ArrayList,注册与反注册其实就是在这个List中add或者remove处理。

时间: 2024-10-09 22:40:45

【v2.x OGE教程 16】 Modifier使用相关的相关文章

【v2.x OGE教程 18】 Entity相关

让游戏设计变灵活的方法之一,就是使用实体/组件式设计方法,该方法将所有物体都看作Entity对象,而不是为每种物体设计一个类.在屏幕中所绘制的所有东西都是实体(场景.层.文字.几何图形.线条.精灵等).这些实体对象稍后会被动态地设置属性(或组件),使之对应的做出改变. 1.更新相关 Engine以逻辑线程及GL线程以数据同步的方式对游戏进程进行更新,Entity更新其中onUpdate和onDraw方法,onUpdate方法中IgnoreUpdate就是判断是否更新逻辑(包括属性参数,如坐标等)

【v2.x OGE教程 15】 布局相关

1.父与子关系 我们可以在Entity类看到很多parent(父)与child(子)这样的字眼,这是游戏引擎中常有的概念,简单而言是一种has-a的关系 对应代码: B.attachChild(A); B.attachChild(C); C.attachChild(D); 从代码和图片可以看出 B没有父 B的子是A.C A和C的父都是B C的子是D D的父是C 2.实体的相对布局 在Entity方法中,Entity常用相对布局来实现界面效果,而且可以利用相对布局达到适配的效果. private 

【v2.x OGE教程 12】 关卡编辑器帮助文档

[v2.x OGE教程 12] 关卡编辑器帮助文档 一.简介 关卡编辑器用于游戏关卡界面元素的可视化编辑,包括元素的位置.尺寸以及其它自定义属性.通过解析生成的数据文件即可获取关卡信息,并能随时调整,以减少开发工作量,提高开发效率. 二.界面 主界面 图01_主界面 1) 画布 ① 简介 画布用于关卡元素的预览,并提供元素选择和坐标设置等功能:画布的尺寸与其正在显示的关卡的尺寸相同 图02_画布 ② 选择元素 a. 单选:鼠标左键单击即可选中单个元素,选中后的元素周围出现蓝色的方框,未选中的则为

【v2.x OGE教程 11】 动画编辑器帮助文档

[v2.x OGE教程 11] 动画编辑器帮助文档 版本号 日期 作者 说明 1.0 2014-9-3 橙子游戏 文档创建       一.简单介绍 动画编辑器用于游戏动画的可视化编辑,支持序列帧动画和关键帧动画.通过解析生成的数据文件就可以获取动画信息,并能随时调整,以降低开发工作量.提高开发效率. 二.相关概念 1. 帧 帧是动画在某个时间点的状态.一系列的帧组成了动画的时间线.动画播放时.通过帧的切换,实现动画效果 2. 序列帧 序列帧组成序列帧动画,这样的动画中.仅通过静态图片的切换来实

【v2.x OGE教程 13】 Scene场景使用

[v2.x OGE教程 13] Scene场景使用 一.场景介绍 OGE开源引擎中,场景(Scene)是用于展示游戏画面的,装载各种精灵.按钮.文字等,例如开始场景需要装载一个游戏标题.开始游戏按钮.背景等 二.Scene场景创建 创建一个类,让其继承Scene类或者Scene的子类,ISceneLauncher的接口定义了一系列对Scene的使用规范 三.Scene场景跳转 ISceneLauncher的是实现类(例如Scene或GameLauncher)可以对场景进行跳转 实现代码:publ

【v2.x OGE教程 20】粒子效果

1.介绍 粒子系统表示三维计算机图形学中模拟一些特定的模糊现象的技术,而这些现象用其它传统的渲染技术难以实现的真实感的 game physics.经常使用粒子系统模拟的现象有火.爆炸.烟.水流.火花.落叶.云.雾.雪.尘.流星尾迹或者象发轨迹这样的抽象视觉效果等等. 2.粒子系统结构 OGE引擎的粒子系统中由粒子.粒子发射器.粒子初始化器.粒子修改器来表现粒子效果. 粒子系统:是Entity的子类,管理粒子发射器,发射比率,粒子孵化,管理粒子修改器等的一个系统 粒子发射器:继承IUpdateHa

【v2.x OGE教程 19】 引擎状态控制

1.手机button监听 OGE中提供了在BaseGameLauncher(GameLauncher的父类)和IScene(Scene实现的接口)中定义了onKeyUp和onKeyDown的方法.使得能开发人员能监听到手机button.OGEKeyEvent提供了丰富的button标记,能够用于推断keycode产生的button标记.return的boolean代表事件是否已处理,假设为false代表未处理,传递到别的onKeyDown中.(可參考android事件处理机制) @Overrid

【v2.x OGE教程 14】 控件使用

下面介绍精灵.动画精灵.按钮精灵.文本的常用使用方法 一.精灵相关 1.添加精灵 //创建精灵 Sprite bar_up = new Sprite(400, 0, RegionRes.getRegion(Res.BAR_UP),    getVertexBufferObjectManager()); //将精灵添加至BaseEntityGroup或其子类(如:Scene.Layer等) BaseEntityGroup.attachChild(bar_up); 2.精灵翻转 //两者默认是fal

【v2.x OGE教程 17】事务处理

游戏代码中经常有些逻辑需要处理,因此OGE引擎添加了一个IUpdateHandler的类.IUpdateHandler类是OGE引擎中使用频率非常之高的组件之一,其本身是一个接口,内部有onUpdate以及reset两个函数等待实现,几乎所有OGE引擎应用中都必然会看到它的身影,它也是OGengine开源引擎添加具体业务到游戏业务线程中的主要方法之一. 1.创建IUpdateHandler private IUpdateHandler handler = new IUpdateHandler()