【v2.x OGE-example 第二章(第二节) 修改器的使用】
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 第二章(第二节) 修改器的使用】相关推荐
- 软件构造 第二章 第一节 软件生命周期和版本控制
软件构造第二章 第一节 软件生命周期和版本控制 基本内容 Software Development Lifecycle (SDLC) Traditional software process mode ...
- 第二节认识计算机教案,第二章 第二节 局域网的构建 教学设计_博客
<第二章 第二节 局域网的构建 教学设计_博客>由会员分享,可在线阅读,更多相关<第二章 第二节 局域网的构建 教学设计_博客(3页珍藏版)>请在装配图网上搜索. 1.第二章 ...
- 思维导图下载 注册安全_2019安全工程师《建筑实务》第二章第一节考点:物料提升机思维导图...
2019安全工程师<安全生产专业实务-建筑施工安全>第二章第一节考点:物料提升机思维导图,本节的大部分知识点前两节塔式起重机和施工升降机相似,大家可以对比之前考点的思维导图来理解记忆,本知 ...
- 《啊哈!算法》第二章 - 第一节 - 解密QQ号(Java实现)
<啊哈!算法>第二章 - 第一节- 解密QQ号(Java实现) 解密QQ号--队列 解密QQ号--队列 新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问 QQ号, 小 ...
- [读书笔记][20个月赚130亿]-第二章第二节-165号
我读了20个月赚130亿的, 第二章第二节,165号. 大学路165号, 离斯坦福大学很近的一个地方,学生经常经过的一个地方,那是一个幸运的地方,有个很多成功的公司在那里,谷歌,paypal, 罗技. ...
- 根据黑马pink老师讲的bootstrap而做的笔记(不过多赘述,简洁高效)第二章 第二节 bootstrap前端开发框架以按钮为例(引用网站上已经设置的布局和样式)
咱们大部分围绕着两个问题来叙述 是什么? 怎么做? 一.目录(总体,这门课要学的目录)(现在是第二章,bootstrap前端开发框架) 1.响应式开发 2.bootstrap前端开发框架 3.boot ...
- linux 下 qserialport waitforreadyread_北师大版初中数学八年级(下)第二章第一节不等关系(精品)...
第二章 一元一次不等式与 一元一次不等式组 2.1不等关系 一.知识点梳理 不等式:一般地,用"<"(或"≤"),">"(或&q ...
- 第二章第一节 能把梳子卖给和尚吗
第二章 能把梳子卖给和尚吗 1.求职遭遇奇妙陷阱 话说刘备大四毕业那年春天,卢植因为得罪了校办公室主任左丰,被指控犯罪批捕入狱,案由涉及男女情色和贪污受贿.直到刘备毕业离校,才因为查无实据而无罪获释. ...
- 带你玩转区块链--以太坊基础、发币、基于智能合约实现彩票项目-第二章-第一节【以太坊篇】
意义: 在上一节知识学习中,我们已经了解如何实现一个基础区块链,并重构了BTC关键代码.对比传统的中心化项目,区块链项目拥有很多优势,如:追溯性.不可传篡改性.在中心化项目中的网络协议是:[数据层-- ...
- 第二章 第二节 安装Eclipse
第二节 安装Eclipse 返回目录 Eclipse.org站点提供整个Eclipse系统的下载,包括SWT和JFace.下载主站是http://www.eclipse.org/downloads. ...
最新文章
- 如何优雅的实现 try/catch 异常块?
- mse函数(均方误差函数)
- 运行中的Nginx进程间的关系
- 【矩阵乘法】【倍增】美食家(luogu 6772)
- LintCode 1917. 切割剩余金属
- Android studio小问题解决
- java中线程观察者模式_设计模式之--观察者模式
- JavaScript正则表达式之分组匹配 / 反向引用
- 前端项目总结与分享(PPT整理)
- android swf 文件播放器,swf播放器怎么用?swf播放器安卓版使用教程
- solid converter pdf解锁密码_pdf转换word文档怎么操作
- 实验二、人工智能:产生式系统(动物识别系统)
- nginx配置多个域名使用同一个端口
- 微信小程序开发:集成微信支付功能
- 40款免费开源游戏下载
- open wrt 跟换主题_openwrt 更改默认主题
- 宣传册打印选择哪种纸张
- p站自动收藏画作 post请求,request payload
- laravel api 429 问题解决
- C++11新特性之long long类型