黑莓.圖片的載人

圖片的載入(僅供參考)


說明:

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的值,就可以達到切換圖片的效果了。

發佈了30 篇原創文章 · 獲贊 11 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章