博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【v2.x OGE教程 14】控件使用
阅读量:5729 次
发布时间:2019-06-18

本文共 3650 字,大约阅读时间需要 12 分钟。

hot3.png

【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.精灵翻转

//两者默认是false

bar_up.setFlippedHorizontal(pFlippedHorizontal);//水平翻转

bar_up.setFlippedVertical(pFlippedVertical)//垂直翻转

3.精灵分离

方法一:

object.detachChild(bar_up);//object必须是attachChild时所引用的对象

方法二:

bar_up.detachSelf();//引用其Parent对象将其detach

 

二、动画精灵相关

1.添加动画精灵

//创建动画精灵 所需帧图必须在同一纹理上

AnimatedSprite bird = new AnimatedSprite(0, 0, Res.BRID_YELLOW, 

getVertexBufferObjectManager());

//将精灵添加至BaseEntityGroup或其子类(如:Scene、Layer等)

BaseEntityGroup.attachChild(bird);

2.播放动画

AnimatedSprite类中有各种animate方法对帧图进行播放,以下是animate方法中各参数意思:

 

pFrameDurationEach:每帧播放时间(毫秒)

IAnimationListener :监听当播放前后,切换帧,循环结束后。

pLoop:是否循环

pLoopCount:循环次数

pFrameDurations:自定义每帧播放时间

pFirstTileIndex:从哪一帧开始播放 

pLastTileIndex:从哪一帧结束播放 (FirstTileIndex必须小于LastTileIndex

pFrames[]:自定义播放的帧

IAnimationData:设置动画参数的接口

3.播放动画监听

AnimatedSprite类中用IAnimationListener接口来监听动画

 

//AnimatedSprite.LOOP_CONTINUOUS是无限循环

public void onAnimationStarted(final AnimatedSprite pAnimatedSprite, final int pInitialLoopCount);

 

//动画的帧改变时会调用

public void onAnimationFrameChanged(final AnimatedSprite pAnimatedSprite, final int pOldFrameIndex, final int pNewFrameIndex);

 

//循环一次结束时调用

public void onAnimationLoopFinished(final AnimatedSprite pAnimatedSprite, final int pRemainingLoopCount, final int pInitialLoopCount);

 

//动画播放完时调用

public void onAnimationFinished(final AnimatedSprite pAnimatedSprite);

 

 

4.分离动画精灵

方法一:

object.detachChild(bar_up);//object必须是attachChild时所引用的对象

方法二:

bar_up.detachSelf();//引用其Parent对象将其detach

 

三、按钮精灵

按钮精灵使用TiledRegion使得按钮在ButtonSprite.State不同状态中切换帧图,加强表达效果,重写onAreaTouched方法给予用户良好体验,注册OnClickListener监听点击事件发生

1.添加按钮

//创建按钮精灵 所需帧图必须在同一纹理上

ButtonSprite btnOK = new ButtonSprite(0, 0, Res.GAME_READY, 

getVertexBufferObjectManager());

this.attachChild(btnOK);

2.按钮监听

btnOK.setOnClickListener(new OnClickListener() {

@Override

public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, 

float pTouchAreaLocalY) {

//TODO 

}

});

3.按钮状态

NORMAL(0),//普通

PRESSED(1),//按下

DISABLED(2);//不可用

 

DISABLED状态需设置setEnable(pEnabled)才可改变

4.分离按钮

方法一:

object.detachChild(btnOK);//object必须是attachChild时所引用的对象

方法二:

btnOK.detachSelf();//引用其Parent对象将其detach

 

 

四、文本相关

1.添加文本

//确保BitmapFont已加载,并且已包含所需文字

//pCharactersMaximum 所允许最大文本长度,若超出则后面部分不显示

Text bitmapText = new Text(00, bitmapFont, "Hello World!",200

new TextOptions(HorizontalAlign.CENTER),

this.getVertexBufferObjectManager());

//将精灵添加至BaseEntityGroup或其子类(如:Scene、Layer等)

this.attachChild(bitmapText);

 

2.更新文本

//更新文本后矩形会根据文字内容增大或缩小,所以需要配合setPosition将坐标重新更改

bitmapText.setText("Just a Demo");

3.分离文本

方法一:

object.detachChild(bitmapText);//object必须是attachChild时所引用的对象

方法二:

bitmapText.detachSelf();//引用其Parent对象将其detach

4.软键盘监听

 

 

/**hint 文本为空时出现的信息

* text 默认文本

* 输入类型ISoftInput.INPUT_TYPE_XXX

* 最大输入字节数

* 文本监听

Device.getDevice().getSoftInput().showSoftInput(hint, text, inputType, maxTextLength, onSoftInputListener);

 

五、线、矩形相关

1.创建线、矩形

//创建需要两个点

Line line = new Line(0, 0, 0, 0, pVertexBufferObjectManager);

//将精灵添加至BaseEntityGroup或其子类(如:Scene、Layer等)

BaseEntityGroup.attachChild(line);

 

//创建需要设定宽高

Rectangle rect = new Rectangle(0, 0, 100, 100, getVertexBufferObjectManager());

//将精灵添加至BaseEntityGroup或其子类(如:Scene、Layer等)

BaseEntityGroup.attachChild(rect);

2.分离线、矩形

方法一:

object.detachChild(line);//object必须是attachChild时所引用的对象

object.detachChild(rect);//object必须是attachChild时所引用的对象

方法二:

line.detachSelf();//引用其Parent对象将其detach

rect.detachSelf();//引用其Parent对象将其detach

 

 

 

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

你可能感兴趣的文章
HTML5区域范围文本框实例页面
查看>>
oracle查看经常使用的系统信息
查看>>
android:layout_gravity和android:gravity属性差异
查看>>
hadoop-ha组态
查看>>
关于jave在oracle驱动下事务提交与回滚问题
查看>>
Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
查看>>
【Android】7.7 以后改为在Win10下开发了
查看>>
使用jQuery页面加载函数启动定时任务
查看>>
CSS这些代码你都不会,你还有什么好说的!!!
查看>>
Redis不同数据类型的的数据结构实现
查看>>
使用Spring AOP切面解决数据库读写分离
查看>>
C#中使用SendMessage进行进程通信,可以发送字符串(转载)
查看>>
在VS2013中查看C/C++预处理后的文件
查看>>
linux 查看所有用户
查看>>
阿里云 云解析使用方法/在阿里云ESC服务器解析域名并绑定服务器IP后上传文件通过域名访问步骤教程...
查看>>
Appium 输入 & 符号,实际输入&-
查看>>
Spring开启方法异步执行
查看>>
NAT alg 和 ASPF
查看>>
http://www.16aspx.com/Code/Show/5352
查看>>
UVA - 434 Matty's Blocks
查看>>