gpt4 book ai didi

android 可缩放和可滚动的棋盘游戏

转载 作者:行者123 更新时间:2023-11-29 15:31:21 24 4
gpt4 key购买 nike

我正在开发一款 Android 棋盘游戏,我有一个关于创建可缩放和可滚动棋盘的问题。棋盘包含静态背景、角色(玩家)和使用图 block 绘制的实际“关卡”。

我的解决方案是拥有一个元素集合(图 block 、人物、所有游戏元素——都有 x、y 坐标和宽度 + 高度)、一个相机和一个根据 cameraX、cameraY、cameraWidth 和相机高度。因此,如果用户向右滚动,相机将适本地设置 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 实现滚动吗?

我不想使用任何引擎,因为这是一个学校项目。

最佳答案

其实你可以稍微简化一下这种情况。如果您确实正在寻找一个平面纹理平面,它只是被透视扭曲了,Android Camera 类可以帮助您。不要将其与用于拍照的硬件相机混淆。这个相机是一个包裹在矩阵周围的辅助类,用于对 2D 对象执行转换。您可以通过谷歌搜索“快速傅立叶变换”来阅读有关这个​​非常复杂的渲染主题的更多信息。基本上你会想要创建一个 Canvas 并以完全 2D 的方式进行绘图。然后就在您绘制到屏幕之前,您应该使用 Camera 类转换此 Canvas 。如果您需要澄清,请告诉我。幕后有很多很酷的数学运算!

查看来自 Android API 演示的示例

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.html

Android graphics.Camera 文档

http://developer.android.com/reference/android/graphics/Camera.html

关于android 可缩放和可滚动的棋盘游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6228830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com