【发布时间】:2012-06-12 08:15:11
【问题描述】:
在一个 WP7 游戏中,我正在构建我的 Enemy 类被包裹在一个 EnemyControl 中。
敌人控制使用该敌人类型的所有不同动画状态的spritesheet。我静态缓存位图的图片只有 4 张。
我遇到的问题是,尽管图像被缓存(BitmapImage 静态和CacheMode="BitmapCache"),当控件加载图像时,它为每个控件增加了大约 2 兆的纹理/系统内存。
这是一个严重的问题,因为它限制了我可以想象的屏幕上敌人的数量。
有人知道如何改善这种情况吗?还是以其他方式解决?
如果有兴趣,这里是 xaml:
<Canvas x:Name="canEnemyControl">
<Canvas.RenderTransform>
<TranslateTransform x:Name="enemyControlTransform" X="0"/>
</Canvas.RenderTransform>
<Canvas.Clip>
<RectangleGeometry x:Name="clipGeometry" Rect="0,0,60,60" />
</Canvas.Clip>
<Image x:Name="imgEnemy" Stretch="None" CacheMode="BitmapCache" >
<Image.RenderTransform>
<TranslateTransform x:Name="enemyImageTransform" X="0" Y="0" />
</Image.RenderTransform>
</Image>
</Canvas>
【问题讨论】:
-
2MB 对于 60x60 的图像来说似乎很多。你要缩小图像吗?
-
图像大小为 1501 x 300。磁盘上约 100k。剪辑技术将其限制为一次显示 60x60。
-
单张图片的原因是由于我无法通过情节提要和控件调整大小来解决的一些疯狂问题。
标签: performance image windows-phone-7 optimization sprite-sheet