图片的载入(仅供参考)
说明:
1、 把要载入的图片,放在当前项目的根目录下,那么图片的路径为:app/native/图片名;
2、 下面所讨论中使用的图片的格式为png,这是因为在自定义函数:
bbutil_load_texture
中,所打开的图片是png格式,如需要,可自行更改;
3、 下面讨论中所涉及到的图片等资源,皆已包含;
4、 切换图片是控制模块的工作,这儿使用虚拟键盘作为事件处理的例子。
一般方法:
一、 创建一个context (方法略);
二、 初始化EGL,可使用自定义函数:
bbutil_init_egl
进行初始化,此函数在新建一个项目后,都会在bbutil.h中有定义;
三、 申明(star)屏幕事件和navigator事件,可用库函数screen_request_events函数和navigator_request_events进行申明;
四、 导入图片,导入图片,可以修改HelloWorldDisplay例子中的初始化init()函数为init(char filename[]), 而filename参数是用于
intbbutil_load_texture(const char* filename, int* width, int* height, float*tex_x, float* tex_y, unsigned int* tex);
中的第一个参数。
filename可以从main函数中传递过来,实现不同图片的打开。在bbutil_load_texture中有一个库函数
glViewport;
此函数有四个参数,前两个是图片的左下方所在的点的左边(平面直角坐标系), 后面两个参数是图片显示的高和宽。
五、 增加控制模块(这一块的代码完全可以复制,然后自行增添其中的功能键):
代码:
void handleScreenEvent(bps_event_t *event)
{
screen_event_tscreen_event = screen_event_get_event(event);
intscreen_val;
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &screen_val);
switch(screen_val) {
caseSCREEN_EVENT_KEYBOARD:
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_KEY_FLAGS,&screen_val);
if (screen_val & KEY_DOWN) {
screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_KEY_SYM,&screen_val);
printf("The '%c' key was pressed\n",(char)screen_val);
fflush(stdout);
switch (screen_val) {
case KEYCODE_I:
// Display the email layout with "Send" enter key
virtualkeyboard_change_options(VIRTUALKEYBOARD_LAYOUT_EMAIL,VIRTUALKEYBOARD_ENTER_SEND);
break;
case KEYCODE_T:
virtualkeyboard_show();
break;
case KEYCODE_O:
// Display the phone layout with "Connect" enter key
virtualkeyboard_change_options(VIRTUALKEYBOARD_LAYOUT_PHONE,VIRTUALKEYBOARD_ENTER_CONNECT);
break;
case KEYCODE_P:
// Display the default layout with default enter key
virtualkeyboard_change_options(VIRTUALKEYBOARD_LAYOUT_DEFAULT, VIRTUALKEYBOARD_ENTER_DEFAULT);
break;
case KEYCODE_H:
// Hide the keyboard
virtualkeyboard_hide();
break;
case KEYCODE_DOWN:
// Increment rotation angle
a++;
break;
case KEYCODE_UP:
// Decrement rotation angle
a--;
break;
case KEYCODE_RIGHT:
a++;
break;
case KEYCODE_LEFT:
a--;
break;
default:
break;
}
}
break;
}
其中a为全局变量:static int a = 0;
在mian函数中调用此函数韦:
if (event) {
int domain = bps_event_get_domain(event);
if (domain == screen_get_domain()) {
handleScreenEvent(event);
} else if ((domain == navigator_get_domain())
&& (NAVIGATOR_EXIT== bps_event_get_code(event))) {
e = 1;
}
}
e定义为inte = 0;当e = 1时,就跳出循环。
当a等于不同的值时,就改变filename的值,就可以达到切换图片的效果了。