圖片的載入(僅供參考)
說明:
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的值,就可以達到切換圖片的效果了。