我正在開發一款Android棋盤遊戲,並且有關於創建可縮放和滾動棋盤的問題。該板包含一個靜態背景,角色(玩家)和用瓦片繪製的實際「水平」。android可縮放和滾動棋盤遊戲
我的解決方案是擁有一組元素(瓷磚,人物,所有遊戲元素 - 全部具有x,y座標和寬度+高度),相機和渲染器,根據cameraX,cameraY,cameraWidth和cameraHeight。因此,如果用戶滾動到右側,攝像頭就會恰當地設置攝像頭X,並且表面可以滾動。如果用戶放大/縮小渲染器,則會適當縮放每個元素圖像。與輸入/輸出
protected function draw(Canvas c){
Collection elements = collection.getElements(cameraX,cameraY,cameraWidth,cameraHeight);
if(elements.size() > 0) {
for(int i = 0; i < elements.size(); i++) {
elements.get(i).drawElement(c);
}
}
}
.
.
.
// element class drawElement function
protected drawElement function(Canvas c) {
if(this.image != null) {
int w = this.width;
int h = this.height;
if(this.zoomFactor < 1) {
w*=this.zoomFactor;
h*=this.zoomFactor;
}
c.drawBitmap(this.image,this.x,this.y,w,h);
}
}
- 滾動面和縮放渲染
示例代碼,這是最好的解決方案?
- 難道它會以某種方式實現嗎?
- 使用ScrollView可以滾動滾動嗎?
我不想使用任何引擎,因爲這是一個學校項目。
所以,如果我理解正確,U建議我畫在畫布上,然後使用Canvas.scale()和Canvas.save()實現縮放功能?如何滾動(我應該這樣做,如上所述)?你可以發佈一個關於這個類的鏈接(我得到的是硬件相機)。謝謝 – Jernej 2011-06-03 16:53:40
正確!看起來像你得到它。如上所述,使用'Camera.translate(x,y,z)'方法代替滾動。您需要翻譯X軸和Y軸以進行滾動,然後上下翻轉Z軸進行縮放。對於缺失的鏈接抱歉,很難找到!該文檔是http://developer.android.com/reference/android/graphics/Camera.html – Sam 2011-06-03 17:09:07
謝謝你,你一直很有幫助..如果我明白correclty你的方法繪製整個級別(這大約是2000x480像素)到畫布(480x800像素),並使用相機類來實現滾動和縮放。但不是畫出整個級別(2000x500)的每一幀高頻? – Jernej 2011-06-03 18:25:20