私は Android ボード ゲームを開発していますが、ズーム可能でスクロール可能なボードの作成について質問があります。ボードには、静的な背景、キャラクター (プレイヤー)、およびタイルを使用して描画される実際の「レベル」が含まれています。
私の解決策は、要素のコレクション (タイル、フィギュア、すべてのゲーム要素 - すべて x、y 座標と幅 + 高さ)、カメラ、および cameraX、cameraY、cameraWidth、cameraHeight に従ってコレクションを描画するレンダラーを用意することです。したがって、ユーザーが右にスクロールすると、カメラは cameraX を適切に設定するだけで、表面はスクロール可能になります。また、ユーザーがズームイン/ズームアウトすると、レンダラーはすべての要素の画像を適切にスケーリングします。
スクロール可能なサーフェスとズームイン/ズームアウトを備えたレンダラーのコード例
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 を使用してスクロールを実現できますか?
これは学校のプロジェクトのためなので、エンジンを使いたくありません。