黑莓.图片的载人

图片的载入(仅供参考)


说明:

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的值,就可以达到切换图片的效果了。


版权声明:本文为wwv386646959原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。