遊戲中Edit的製作

2021-04-21 02:19:14 字數 1893 閱讀 5949

edit,也就是文字框了,是玩家可輸入的控制項,也是遊戲中ui中最難實現的乙個控制項(相比button,list,checkbox)。

原理:1 先定義一條資料結構,用於處理輸入字串,比如分行,游標位置等。

2 把使用者輸入的內容寫到記憶體中。

3 從記憶體中讀取資料,放到遊戲引擎中,讓引擎顯示到介面。

詳細:1 是比較麻煩的,當然,不同的需求有不同的實現,這裡就不多說了,重點講下2和3。

2/3  獲得使用者輸入的字元,新增到已有的字串中,然後寫到記憶體dc中,當然是以位圖的形式存在。遊戲引擎應當有乙個介面,提供取這些資料,然後生成一張紋理,貼到螢幕上去。部分**如下:

char str[100];

memset(str,0,100);

tchar c=(tchar)wparam;

sztext[index]=c;

index++;

hdc = getdc (g_pkgameworld->getrdnderwindowref()) ;

hdcmem  = createcompatibledc (hdc) ;

hbitmap = createcompatiblebitmap (hdc, 300, 30) ;

selectobject(hdcmem, hbitmap) ;

textout (hdcmem, 0, 0, sztext, lstrlen (sztext));

getobject(hbitmap,sizeof(bitmap),&bm);

int count=bm.bmwidthbytes * bm.bmheight;

bitmapinfoheader bih=;

bih.bibitcount=bm.bmbitspixel;

bih.bicompression=bi_rgb;

bih.biheight=bm.bmheight;

bih.biplanes=1;

bih.bisize=sizeof (bitmapinfoheader);

bih.bisizeimage = bm.bmwidthbytes * bm.bmheight;

bih.biwidth = bm.bmwidth;

bitmapfileheader bfh = ;

bfh.bfoffbits = sizeof (bitmapfileheader) + sizeof (bitmapinfoheader);

bfh.bfsize = bfh.bfoffbits + bm.bmwidthbytes + bm.bmheight;

bfh.bftype = (word)0x4d42;

nipixeldataptr pixeldata=ninew nipixeldata(300,30,nipixelformat::rgb24);//nipixelformat::rgb24

p=new byte[count];

int iis=getdibits(hdc,hbitmap,0,30,p,(lpbitmapinfo)&bih,dib_rgb_colors);

unsigned char * pdata = pixeldata->getpixels();

unsigned char szpixeldata[3];

int jj=0;

for(int i=bm.bmheight; i>0; i--)

}nisourcetexture * pktex;

pktex = nisourcetexture::create(pixeldata);

niscreentexture* pkscreentexture = ninew niscreentexture(pktex);

pkscreentexture->addnewscreenrect(50, 50, 300, 30, 0, 0);

delete  p;

Android遊戲中的動畫製作

遊戲中最常見的元素就是了,想讓乙個遊戲中的角色看起來更生動,單靠簡單的移動和旋轉是遠遠不夠的,我們應該為角色新增動畫,動起來 的角色看起來既生動又貼近現實,具有更好的使用者體驗。那麼動畫在遊戲中是如何實現的呢?我們拿當今紅的發紫的 捕魚達人 這個遊戲來說明。如果我們有這樣一張,想讓這只鯊魚動起來是很...

遊戲中的指令碼

現在遊戲裡流行的指令碼有python 和lua 例如魔獸世界就是用lua指令碼來驅動邏輯的。我們為什麼用指令碼,而不是純用c 呢?當然,這與團隊協作以及工作效率有關。c 編譯速度不佳,當乙個專案達到比較龐大的乙個規模時,編譯的時間往往會讓人憤怒了。於是,python出現了。一些重要的演算法實現,圖形...

遊戲中的音效

1.遊戲中的即時音效 soundpool類 public int load context context,int resid,int priority 架子啊音訊檔案 context 該引數為應用程式的上下文 resid 該引數為要載入的音效資源的id priority 優先順序 例項 初始化聲音...