【DND图形库】四、文本绘制和按键检测
四、文本繪制和按鍵檢測
(甲)文本繪制
文本是Text類,本質(zhì)上是基于Sprite的,但是用戶不需要考慮這么多。首先我們需要準備一個字體文件,在系統(tǒng)的C:\Windows\Fonts目錄,有許多的字體文件,找一個自己喜歡的拷貝到工作目錄里即可(如果要輸出中文,則字體必須包含中文)。假設我們復制的是楷體(simkai.ttf),那么先要加載字體文件,并取一個名字。
sys->LoadFontFile(L"01", L"Data\\Font\\simkai.ttf");然后通過“01”這個名字創(chuàng)建一個Text對象:
Text* _txtLT = canvas->CreateText(L"01", 24);//名字和大小 _txtLT->SetString(L"按WASD移動,QE旋轉(zhuǎn),ZX縮放");//文本內(nèi)容最后在幀函數(shù)中繪制,調(diào)動Render:
_txtLT->Render();效果如圖所示:
?(乙)按鍵檢測與坐標系
響應鍵盤和鼠標是使用Game的input成員(Input類),要實現(xiàn)移動效果,我們需要再次理解前面提到的Coor(坐標系)類。
Coor具有四個屬性:
parent:父坐標系(Coor)
position:位置(Vector2,像素)
rotate: 旋轉(zhuǎn)(float,弧度制)
scale:縮放 (Vector2,長和寬的比例)
前面我們使用了p->GetCoor()->SetPosition()的方式設置了位置,要旋轉(zhuǎn)或者縮放精靈,則需要分別調(diào)用SetRotate和SetScale函數(shù)。
我們需要每一幀都檢測按鍵,所以在幀函數(shù)寫道:
//記錄位置 Vector2 pos = _arrSpr[1]->GetCoor()->GetPosition(); //計算位移,這里是1秒鐘移動100像素 //time->GetRealDelta()返回的是一幀的時間 float dis_dt = 100.0f * time->GetRealDelta();//判斷按鍵是否按下 if (input->KeyState(KeyCode::W))pos.b -= dis_dt; if (input->KeyState(KeyCode::S))pos.b += dis_dt; if (input->KeyState(KeyCode::A))pos.a -= dis_dt; if (input->KeyState(KeyCode::D))pos.a += dis_dt;//設置新位置 _arrSpr[1]->GetCoor()->SetPosition(pos);上面實現(xiàn)了按鍵位移,接下來實現(xiàn)旋轉(zhuǎn)和縮放:
//旋轉(zhuǎn) float r = _arrSpr[1]->GetCoor()->GetRotate(); //每秒旋轉(zhuǎn) 四分之一PI float r_dt = Math::GetPI<1, 4>() * time->GetRealDelta(); if (input->KeyState(KeyCode::Q))r -= r_dt; if (input->KeyState(KeyCode::E))r += r_dt;//縮放 float scale = _arrSpr[1]->GetCoor()->GetScale().a; //每秒縮放0.5 float scale_dt = 0.5f * time->GetRealDelta(); if (input->KeyState(KeyCode::Z))scale -= scale_dt; if (input->KeyState(KeyCode::X))scale += scale_dt;//設置屬性 _arrSpr[1]->GetCoor()->SetPosition(pos); _arrSpr[1]->GetCoor()->SetRotate(r); _arrSpr[1]->GetCoor()->SetScale({scale, scale });?重新設置一下綠色精靈的父坐標系和位置,下面將它父坐標系設為了貓,這樣它就會跟著貓精靈一起變換,具體效果就不截圖了,代碼如下:
_arrSpr[0]->GetCoor()->SetParent(_arrSpr[1]->GetCoor()); _arrSpr[0]->GetCoor()->SetPosition({ 100, 100 });?
總結(jié)
以上是生活随笔為你收集整理的【DND图形库】四、文本绘制和按键检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【DND图形库】三、创建窗口和绘制精灵
- 下一篇: 【DND图形库】五、按钮控件与音效