2019独角兽企业重金招聘Python工程师标准>>>

【v2.x OGE-example 第二章(第二节) 修改器的使用】

1. 位置:Modifier_example --> Modifier
2. 类名:Modifier

(1).使用modifier 可以做出一些精灵的特效,旋转,倾斜,透明,放大,缩小等等。常用的modifier如下,

<1>. AlphaModifier 透明度修改器

<2>. ColorModifier 颜色修改器

<3>. CubicBezierCurveMoveModifier 三次方贝塞尔曲线曲线修改器

<4>. DelayModifier 延迟修改器

<5>. FadeInModifier 淡入修改器

<6>. FadeOutModifier 淡出修改器

<7>. JumpModifier 跳跃修改器

<8>. MoveByModifier 移动修改器(当前位置开始)

<9>. MoveModifier 移动修改器(从某个点到另外一个点)

<10>. MoveXModifier 移动X修改器

<11>. MoveYModifier 移动Y修改器

<12>. PathModifier 路径修改器

<13>. QuadraticBezierCurveMoveModifier 二次贝塞尔曲线修改器

<14>. RotationAtModifier 旋转修改器(需传入旋转中心点)

<15>.RotationByModifier 旋转修改器(只需传入旋转到的目标角度)

<16>. RotationModifier旋转修改器(从某个角度到另外一个角度)

<17>. ScaleAtModifier缩放修改器(需传入缩放中心点)

<18>. ScaleModifier 缩放修改器(从缩放多少倍数到另外一个倍数)

<19>. SkewModifier 倾斜修改器

<20>. SkewXModifier 倾斜X修改器

<21>. SkewYModifier 倾斜Y修改器

<22>. LoopEntityModifier循环容器修改器(使某个动作修改器循环实行)

<23>. SequenceEntityModifier序列容器修改器(使某几个动作修改器依次实行)

<24>. ParallelEntityModifier并行实体容器修改器(使某几个动作修改器同时实行)

(2).以下是使用modifier的例子:

/**普通Modifier用法*/

private void setGeneralModifier() {

//画蓝色背景 填满屏幕

Rectangle rectangle = new Rectangle(0, 0, getWidth(), getHeight(), getVertexBufferObjectManager());

rectangle.setColor(0.09804f, 0.6274f, 0.8784f);

this.attachChild(rectangle);//加入场景

AnimatedSprite face_rect = new AnimatedSprite(gap*1, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(rotation_mod);

}

/**安先后顺序执行Modifier用法*/

private void setSequenceEntityModifier(){

AnimatedSprite face_rect = new AnimatedSprite(gap*2, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//1秒内 从1倍放大到2倍

ScaleModifier scale_mod = new ScaleModifier(1, 1, 2);

//定制两个Modifier按先后顺序执行

SequenceEntityModifier sequence_mod = new SequenceEntityModifier(rotation_mod, scale_mod);

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(sequence_mod);

}

/**循环执行的Modifier*/

private void setLoopEntityModifier(){

AnimatedSprite face_rect = new AnimatedSprite(gap*3, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//1秒内 从1倍放大到2倍

ScaleModifier scale_mod = new ScaleModifier(1, 1, 2);

//延时0.5s

DelayModifier delay_mod = new DelayModifier(0.5f);

//Modifier按先后顺序执行

SequenceEntityModifier sequence_mod = new SequenceEntityModifier(rotation_mod, delay_mod, scale_mod);

//Modifier 循环执行

LoopEntityModifier loop_mod = new LoopEntityModifier(sequence_mod);

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(loop_mod);

}

/**Modifier 加入监听器*/

private void setModifierListener(){

AnimatedSprite face_rect = new AnimatedSprite(gap*4, 150, Regions.FACE_RECTANGLE, getVertexBufferObjectManager());

this.attachChild(face_rect);

//2秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(2, 0, 360);

//IEntityModifierListener Modifier监听器,监听开始、结束

LoopEntityModifier loop_mod = new LoopEntityModifier(rotation_mod, 5, new IEntityModifierListener() {

@Override

public void onModifierStarted(IModifier<IEntity> pModifier, IEntity pItem) {

//pItem = which will be register

System.out.println("onModifierStarted");

pItem.setVisible(true);

}

@Override

public void onModifierFinished(IModifier<IEntity> pModifier, IEntity pItem) {

//pItem = which will be register

System.out.println("onModifierFinished");

pItem.setVisible(false);

}

});

//注册一个Modifier(修改器)在face_rect中

face_rect.registerEntityModifier(loop_mod);

}

/**一个并行Modifier*/

private void setParallelEntityModifier(){

AnimatedSprite face_ball = new AnimatedSprite(gap*1, 300, Regions.FACE_BALL, getVertexBufferObjectManager());

//1秒内 从0度转到360度

RotationModifier rotation_mod = new RotationModifier(1, 0, 360);

//1秒内 从1倍放大到2倍

ScaleModifier scale_mod = new ScaleModifier(1, 1, 2);

//1秒内 透明度从1到0

AlphaModifier alpha_mod = new AlphaModifier(1, 1, 0);

//并行 Modifier

ParallelEntityModifier parallel_mod = new ParallelEntityModifier(rotation_mod,scale_mod,alpha_mod);

// 循环  Modifier

LoopEntityModifier loop_mod = new LoopEntityModifier(parallel_mod);

//注册 Modifier

face_ball.registerEntityModifier(loop_mod);

//加入场景

this.attachChild(face_ball);

}

private void irregular_EntityModifiers(){

final AnimatedSprite face1 = new AnimatedSprite(gap*2, 300, Regions.FACE_BALL, this.getVertexBufferObjectManager());

face1.setRotationCenter(0, 0);//设置左上角为旋转中心点

face1.setScaleCenter(0, 0);//设置左上角为放大中心点

face1.animate(100);

final AnimatedSprite face2 = new AnimatedSprite(gap*3, 300, Regions.FACE_RECTANGLE, this.getVertexBufferObjectManager());

face2.animate(100);

final SequenceEntityModifier entityModifier = new SequenceEntityModifier(

new IEntityModifierListener() {

@Override

public void onModifierStarted(final IModifier<IEntity> pModifier, final IEntity pItem) {

System.out.println("Sequence started.");

}

@Override

public void onModifierFinished(final IModifier<IEntity> pEntityModifier, final IEntity pEntity) {

System.out.println("Sequence finished.");

}

},

//第一步:2秒  X从1.0缩小到0.75,Y从1.0放大到2.0

new ScaleModifier(2, 1.0f, 0.75f, 1.0f, 2.0f),

//第二步:2秒  X从0.75放大到2.0,Y从2.0缩小到1.25

new ScaleModifier(2, 0.75f, 2.0f, 2.0f, 1.25f),

//第三步:放大并旋转

new ParallelEntityModifier(

new ScaleModifier(3, 2.0f, 5.0f, 1.25f, 5.0f),//3秒  X从2.0放大到5.0,Y从1.25放大到5.0

new RotationByModifier(3, 180)//3秒 旋转到180度

),

//第四步:缩小并旋转

new ParallelEntityModifier(

new ScaleModifier(3, 5, 1),//3秒 从5缩小到1

new RotationModifier(3, 180, 0)//3秒 旋转从180到0

)

);

//注册 entityModifier 到face1

face1.registerEntityModifier(entityModifier);

//拷贝出一个 entityModifier 注册到face2

face2.registerEntityModifier(entityModifier.deepCopy());

this.attachChild(face1);//加入场景

this.attachChild(face2);//加入场景

/* Create some not-modified sprites, that act as fixed references to the modified ones. */

/* 加入两个没有做任何动作的精灵作为参考 */

final AnimatedSprite face1Reference = new AnimatedSprite(face1.getX(), face1.getY(), face1.getTiledTextureRegion(), this.getVertexBufferObjectManager());

final AnimatedSprite face2Reference = new AnimatedSprite(face2.getX(), face2.getY(), face2.getTiledTextureRegion(), this.getVertexBufferObjectManager());

this.attachChild(face1Reference);

this.attachChild(face2Reference);

}

OGE_Example项目源码

转载于:https://my.oschina.net/orangegame/blog/341579

【v2.x OGE-example 第二章(第二节) 修改器的使用】相关推荐

  1. 软件构造 第二章 第一节 软件生命周期和版本控制

    软件构造第二章 第一节 软件生命周期和版本控制 基本内容 Software Development Lifecycle (SDLC) Traditional software process mode ...

  2. 第二节认识计算机教案,第二章 第二节 局域网的构建 教学设计_博客

    <第二章 第二节 局域网的构建 教学设计_博客>由会员分享,可在线阅读,更多相关<第二章 第二节 局域网的构建 教学设计_博客(3页珍藏版)>请在装配图网上搜索. 1.第二章 ...

  3. 思维导图下载 注册安全_2019安全工程师《建筑实务》第二章第一节考点:物料提升机思维导图...

    2019安全工程师<安全生产专业实务-建筑施工安全>第二章第一节考点:物料提升机思维导图,本节的大部分知识点前两节塔式起重机和施工升降机相似,大家可以对比之前考点的思维导图来理解记忆,本知 ...

  4. 《啊哈!算法》第二章 - 第一节 - 解密QQ号(Java实现)

    <啊哈!算法>第二章 - 第一节- 解密QQ号(Java实现) 解密QQ号--队列 解密QQ号--队列 新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问 QQ号, 小 ...

  5. [读书笔记][20个月赚130亿]-第二章第二节-165号

    我读了20个月赚130亿的, 第二章第二节,165号. 大学路165号, 离斯坦福大学很近的一个地方,学生经常经过的一个地方,那是一个幸运的地方,有个很多成功的公司在那里,谷歌,paypal, 罗技. ...

  6. 根据黑马pink老师讲的bootstrap而做的笔记(不过多赘述,简洁高效)第二章 第二节 bootstrap前端开发框架以按钮为例(引用网站上已经设置的布局和样式)

    咱们大部分围绕着两个问题来叙述 是什么? 怎么做? 一.目录(总体,这门课要学的目录)(现在是第二章,bootstrap前端开发框架) 1.响应式开发 2.bootstrap前端开发框架 3.boot ...

  7. linux 下  qserialport waitforreadyread_北师大版初中数学八年级(下)第二章第一节不等关系(精品)...

    第二章 一元一次不等式与 一元一次不等式组 2.1不等关系 一.知识点梳理 不等式:一般地,用"<"(或"≤"),">"(或&q ...

  8. 第二章第一节 能把梳子卖给和尚吗

    第二章 能把梳子卖给和尚吗 1.求职遭遇奇妙陷阱 话说刘备大四毕业那年春天,卢植因为得罪了校办公室主任左丰,被指控犯罪批捕入狱,案由涉及男女情色和贪污受贿.直到刘备毕业离校,才因为查无实据而无罪获释. ...

  9. 带你玩转区块链--以太坊基础、发币、基于智能合约实现彩票项目-第二章-第一节【以太坊篇】

    意义: 在上一节知识学习中,我们已经了解如何实现一个基础区块链,并重构了BTC关键代码.对比传统的中心化项目,区块链项目拥有很多优势,如:追溯性.不可传篡改性.在中心化项目中的网络协议是:[数据层-- ...

  10. 第二章 第二节 安装Eclipse

    第二节  安装Eclipse 返回目录 Eclipse.org站点提供整个Eclipse系统的下载,包括SWT和JFace.下载主站是http://www.eclipse.org/downloads. ...

最新文章

  1. 如何优雅的实现 try/catch 异常块?
  2. mse函数(均方误差函数)
  3. 运行中的Nginx进程间的关系
  4. 【矩阵乘法】【倍增】美食家(luogu 6772)
  5. LintCode 1917. 切割剩余金属
  6. Android studio小问题解决
  7. java中线程观察者模式_设计模式之--观察者模式
  8. JavaScript正则表达式之分组匹配 / 反向引用
  9. 前端项目总结与分享(PPT整理)
  10. android swf 文件播放器,swf播放器怎么用?swf播放器安卓版使用教程
  11. solid converter pdf解锁密码_pdf转换word文档怎么操作
  12. 实验二、人工智能:产生式系统(动物识别系统)
  13. nginx配置多个域名使用同一个端口
  14. 微信小程序开发:集成微信支付功能
  15. 40款免费开源游戏下载
  16. open wrt 跟换主题_openwrt 更改默认主题
  17. 宣传册打印选择哪种纸张
  18. p站自动收藏画作 post请求,request payload
  19. laravel api 429 问题解决
  20. C++11新特性之long long类型

热门文章

  1. CJIS安全政策:企业如何确保FIPS合规性?
  2. 从vSphere 5.5升级到6之3-使用VUM升级ESXi
  3. Oracle——20数据库恢复与备份
  4. 用户用老版IE访问网站时的jquery提示插件
  5. Servet映射规范翻译
  6. python中为什么无法导入类_ImportError:无法导入名称类型
  7. Linux 操作系统原理 — 系统启动流程
  8. Altium Designer中如何仅显示顶层的元件和顶层布线
  9. 对于HR通常提的一些问题的总结
  10. 使用css修改checkbox选择框的样式