650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="第二章第二节.png" alt="wKiom1RbPfKQMejeAABk3Gz1X7A620.jpg" src="http://s3.51cto.com/wyfs02/M00/4D/DE/wKiom1RbPfKQMejeAABk3Gz1X7A620.jpg">
(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>.Qua@R_403_6618@icBezIErCurveMoveModifIEr二次贝塞尔曲线修改器
<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用法*/
privatevoIDsetGeneralModifIEr(){
//画蓝色背景填满屏幕
Rectanglerectangle=newRectangle(0,getWIDth(),getHeight(),getVertexBufferObjectManager());
rectangle.setcolor(0.09804f,0.6274f,0.8784f);
this.attachChild(rectangle);//加入场景
AnimatedSpriteface_rect=newAnimatedSprite(gaP*1,150,Regions.FACE_RECTANGLE,getVertexBufferObjectManager());
this.attachChild(face_rect);
//2秒内从0度转到360度
RotationModifIErrotation_mod=newRotationModifIEr(2,360);
//注册一个ModifIEr(修改器)在face_rect中
face_rect.registerEntityModifIEr(rotation_mod);
}
/**安先后顺序执行ModifIEr用法*/
privatevoIDsetSequenceEntityModifIEr(){
AnimatedSpriteface_rect=newAnimatedSprite(gaP*2,360);
//1秒内从1倍放大到2倍
ScaleModifIErscale_mod=newScaleModifIEr(1,1,2);
//定制两个ModifIEr按先后顺序执行
SequenceEntityModifIErsequence_mod=newSequenceEntityModifIEr(rotation_mod,scale_mod);
//注册一个ModifIEr(修改器)在face_rect中
face_rect.registerEntityModifIEr(sequence_mod);
}
/**循环执行的ModifIEr*/
privatevoIDsetLoopEntityModifIEr(){
AnimatedSpriteface_rect=newAnimatedSprite(gaP*3,2);
//延时0.5s
DelayModifIErdelay_mod=newDelayModifIEr(0.5f);
//ModifIEr按先后顺序执行
SequenceEntityModifIErsequence_mod=newSequenceEntityModifIEr(rotation_mod,delay_mod,scale_mod);
//ModifIEr循环执行
LoopEntityModifIErloop_mod=newLoopEntityModifIEr(sequence_mod);
//注册一个ModifIEr(修改器)在face_rect中
face_rect.registerEntityModifIEr(loop_mod);
}
/**ModifIEr加入监听器*/
privatevoIDsetModifIErListener(){
AnimatedSpriteface_rect=newAnimatedSprite(gaP*4,360);
//IEntityModifIErListenerModifIEr监听器,监听开始、结束
LoopEntityModifIErloop_mod=newLoopEntityModifIEr(rotation_mod,5,newIEntityModifIErListener(){
@OverrIDe
publicvoIDonModifIErStarted(IModifIEr<IEntity>pModifIEr,IEntitypItem){
//pItem=whichwillberegister
System.out.println("onModifIErStarted");
pItem.setVisible(true);
}
@OverrIDe
publicvoIDonModifIErFinished(IModifIEr<IEntity>pModifIEr,IEntitypItem){
//pItem=whichwillberegister
System.out.println("onModifIErFinished");
pItem.setVisible(false);
}
});
//注册一个ModifIEr(修改器)在face_rect中
face_rect.registerEntityModifIEr(loop_mod);
}
/**一个并行ModifIEr*/
privatevoIDsetParallelEntityModifIEr(){
AnimatedSpriteface_ball=newAnimatedSprite(gaP*1,300,Regions.FACE_BALL,getVertexBufferObjectManager());
//1秒内从0度转到360度
RotationModifIErrotation_mod=newRotationModifIEr(1,2);
//1秒内透明度从1到0
AlphaModifIErAlpha_mod=newAlphaModifIEr(1,0);
//并行ModifIEr
ParallelEntityModifIErparallel_mod=newParallelEntityModifIEr(rotation_mod,scale_mod,Alpha_mod);
//循环ModifIEr
LoopEntityModifIErloop_mod=newLoopEntityModifIEr(parallel_mod);
//注册ModifIEr
face_ball.registerEntityModifIEr(loop_mod);
//加入场景
this.attachChild(face_ball);
}
privatevoIDirregular_EntityModifIErs(){
finalAnimatedSpriteface1=newAnimatedSprite(gaP*2,this.getVertexBufferObjectManager());
face1.setRotationCenter(0,0);//设置左上角为旋转中心点
face1.setScaleCenter(0,0);//设置左上角为放大中心点
face1.animate(100);
finalAnimatedSpriteface2=newAnimatedSprite(gaP*3,this.getVertexBufferObjectManager());
face2.animate(100);
finalSequenceEntityModifIErentityModifIEr=newSequenceEntityModifIEr(
newIEntityModifIErListener(){
@OverrIDe
publicvoIDonModifIErStarted(finaliModifIEr<IEntity>pModifIEr,finalIEntitypItem){
System.out.println("Sequencestarted.");
}
@OverrIDe
publicvoIDonModifIErFinished(finaliModifIEr<IEntity>pEntityModifIEr,finalIEntitypEntity){
System.out.println("Sequencefinished.");
}
},
//第一步:2秒X从1.0缩小到0.75,Y从1.0放大到2.0
newScaleModifIEr(2,1.0f,0.75f,2.0f),
//第二步:2秒X从0.75放大到2.0,Y从2.0缩小到1.25
newScaleModifIEr(2,2.0f,1.25f),
//第三步:放大并旋转
newParallelEntityModifIEr(
newScaleModifIEr(3,5.0f,1.25f,5.0f),//3秒X从2.0放大到5.0,Y从1.25放大到5.0
newRotationByModifIEr(3,180)//3秒旋转到180度
),
//第四步:缩小并旋转
newParallelEntityModifIEr(
newScaleModifIEr(3,1),//3秒从5缩小到1
newRotationModifIEr(3,180,0)//3秒旋转从180到0
)
);
//注册entityModifIEr到face1
face1.registerEntityModifIEr(entityModifIEr);
//拷贝出一个entityModifIEr注册到face2
face2.registerEntityModifIEr(entityModifIEr.deepcopy());
this.attachChild(face1);//加入场景
this.attachChild(face2);//加入场景
/*Createsomenot-modifIEdSprites,thatactasfixedreferencestothemodifIEdones.*/
/*加入两个没有做任何动作的精灵作为参考*/
finalAnimatedSpriteface1Reference=newAnimatedSprite(face1.getX(),face1.getY(),face1.getTiledTextureRegion(),this.getVertexBufferObjectManager());
finalAnimatedSpriteface2Reference=newAnimatedSprite(face2.getX(),face2.getY(),face2.getTiledTextureRegion(),this.getVertexBufferObjectManager());
this.attachChild(face1Reference);
this.attachChild(face2Reference);
}
OGE_Example项目源码
总结以上是内存溢出为你收集整理的【v2.x OGE-example 第二章(第二节) 修改器的使用】全部内容,希望文章能够帮你解决【v2.x OGE-example 第二章(第二节) 修改器的使用】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)