HGE 系列教材(9) --- GUI(本文未完成)

1. hge 中 GUI 对象和控件

hge 中 GUI 对象被看作是一个控件的容器,hge 提供了创建 GUI 对象的类 hgeGUI 类

 

2. hgeGUI 类

1)AddCtrl 函数

void AddCtrl(
  hgeGUIObject *ctrl    // hgeGUIObject 对象的指针
);

我们通常可以有这样的写法:

gui->AddCtrl(new hgeGUIMenuItem(1,fnt,snd,400,200,0.0f,"Play"));

这里 hgeGUIMenuItem 是一个控件,继承于 hgeGUIObject 类,注意,我们创建了 hgeGUIObject 对象,但是却没有去销毁它,因为 hgeGUI 类的析构函数会去处理这些问题。

2)SetNavMode

设置 GUI 导航模式(Navigate mode):

void SetNavMode(
  int navmode
);

HGEGUI_NONAVKEYS - 无键盘导航
HGEGUI_LEFTRIGHT - 左右按键导航
HGEGUI_UPDOWN - 上下按键导航
HGEGUI_CYCLED - 循环

默认情况下,navmode 被设置为 HGEGUI_NONAVKEYS,对于一个菜单,我们可以这样设置:

SetNavMode(HGEGUI_UPDOWN | HGEGUI_CYCLED);

使用上下键导航,并且循环。

3)SetCursor

设置光标 sprite:

void SetCursor(
  hgeSprite *sprite
);
设置光标对应的 sprite,如果为0,表示不显示光标,默认情况为0。注意,光标不受 GUI 对象的管理,也就是用户必须自己释放光标资源。

4)SetFocus

void SetFocus(
  int id
);

每个控件都有一个对应的 ID 号,这个 ID 号被称之为控件的标识符,这里通过控件标识符来设置焦点。键盘事件只会被分发到成为焦点的控件上。

5)Enter

开始 GUI Enter 动画

 

3. hgeGUIObject

hgeGUIObject 是一个抽象类,它有一个纯虚函数 Render

hgeGUIObject 类的子类的对象并不是 GUI 对象,而是 GUI 控件,这一点应该清楚

1)hgeGUIObject 的成员变量

hgeGUIObject 的成员变量都为 public:

// 必须在构造函数中初始化的变量

int      id;   // 控件标识符
bool     bStatic;    // 如果为 true 控件无法成为焦点也不会接受键盘事件,同时它将被 navigate 例程忽略(前面已谈到设置 navigate)
bool     bVisible;   // 控件是否可见,如果为 false,控件将不被渲染
bool     bEnabled;   // false 时,控件对用户的输入不作出任何回应,但是控件是可以接受到用户的通知(区别于 bStatic)
hgeRect  rect;   // 控件有界框(bounding box)在屏幕上的区域
DWORD    color;   // 控件颜色
// 不需要在构造函数中初始化的变量
hgeGUI       *gui;   // GUI 对象指针
hgeGUIObject *next;   // 连接 GUI 对象中的所有控件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HGE 1.8.1a Unicode Edition and Support Joystick中文的使用方法:1、现将现在的工程转换为UNICODE,否则会提示找不到hgeFont符号。2、在用到的字符串处使用宏TXT()进行字符处理(hge中自带的),也可声明如HGE_CHAR a[]={"hello"};方式使用3、不能使用现在的字体文件,我们先用Bitmap Font Generator (www.AngelCode.com)生成fnt字体,然后用本HGE中自带的bmfconv进行转换,生成本HGE能用的字体。手柄的使用方法:1、先生成一个指针类型的DIJOYSTATE结构,如:DIJOYSTATE js=new DIJOYSTATE; hge.h文件有此结构定义2、m_hge->System_SetState(HGE_USEJOYSTICK,true);进行标志位设置,设置为true为可用手柄。3、m_hge->System_SetState(HGE_JOYSTICKFUN,JoystickStateProxy,js); 其中JoystickStateProxy是指手柄的callback函数,相当于FrameFunc等,函数原型是void JoystickStateProxy();4、m_hge->System_SetState(HGE_JOYUPDATE,10);//更新手柄信息的速度,就是轮询时间,手柄事件的状态更新。5、m_hge->System_SetState(HGE_JOYEVENT,10);//触发事件的速度,也就是JoystickStateProxy这个函数的访问速度。这里是10毫秒触发一次要想看手柄的处理,请看我的博客文章:http://blog.csdn.net/zealczg/archive/2008/07/23/2695760.aspx( 游戏手柄(JoyStick)的延时处理 )声明:本程序的unicode 功能是国外的朋友实现的,并且还支持adobe的flash播放功能,我只是实现了手柄的接口,欢迎进行技术讨论!QQ:16535702,简单问题请勿骚扰!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值