2010-01-16 31 views
9

我目前正在Android中启动一个游戏引擎,首先进入平台并拥有基础知识,但我不确定使用SurfaceView绘制图形时解决方案独立性的最佳方式。解决方案在Android中的独立性SurfaceView

寻找指针,以如何保持游戏/精灵等等都在寻找相同的独立屏幕,显然它不会是有效的扩展所有精灵每帧或存储许多变化对于不同分辨率

回答

5

你只是在加载它们时缩放这些精灵。我猜你正在将它们加载为来自资源的位图,对吗?如果是这样的话,那么所有你需要做的是这样的:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.outHeight = spriteHeight * scale; 
options.outWidth = spriteWidth * scale; 

Bitmap sprite = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.sprite, options) 

如果规模是基于屏幕尺寸的变化。

+0

干杯凯西,与这种解决方案,你认为这将是最好的整合适合像Nexus这样的较大android解决方案的最高精灵,然后缩小旧设备的图形尺寸? – Tom 2010-01-20 13:56:14

+0

我会这么认为,当你缩放它们时,事物往往看起来比它们缩放时要好。 – CaseyB 2010-01-20 16:37:33

+0

所以我试过这段代码,并通过文档..出于某种原因,即使我硬编码outHeight和OutWidth变量,精灵总是输出相同的大小。 – Tom 2010-01-22 20:07:16

1

有两个简单的方法:

第一:

在创建表面来看,它调用:

onSizeChanged (int w, int h, int oldw, int oldh) 

创建几个全局变量,X &ÿ因此,如果您覆盖此有:

onSizeChanged(int w, int h, int oldw, int oldh){ 
this.w=w; 
this.h=h; 
} 

然后在图纸或计算游戏,你可以使用窗口W和H。

二:在绘图和游戏计算

调用的getWidth()&的getHeight()。

祝您好运与您的游戏!

+0

感谢劳伦斯,我想我的问题更多的是针对如何处理比例如果游戏中的位图,使游戏在所有平台上都显示相同... – Tom 2010-01-16 21:16:14

相关问题