【发布时间】:2011-04-20 02:27:47
【问题描述】:
我有 5 个图块。每个都是 16x16 像素,大小为 8kb。它们都是使用 imageNamed 加载的。例如,[UIImage imageNamed:@"dirt.png"]。它们在 init 中加载到 drawRect 之外。我有一个名为“map”的数组,它映射出这些瓷砖的去向。在 DrawRect 中,我有一段代码使用两个 for 循环来渲染舞台,如下所示。
tileNum = startPoint;
for(int i = 0; i< stageHeight; i++){
for(int ii = 0; ii< stageWidth; ii++){
if(map[tileNum] == 0){
[dirt drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==1){
[tree1 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==2){
[tree2 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==3){
[tree3 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==4){
[tree4 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}
tileNum++;
}
tileNum += (mapWidth - stageWidth);
}
模拟器中的一切都很棒,正是我想要的。但是当我在设备上(3GS)时,帧速率会慢到爬行(大约每秒 1 帧)。我怀疑这可能与使用 imageNamed 有关。或者仅仅是因为我渲染了太多的瓷砖? (在 16x16 时,我每帧渲染 600 个图块,但它们是很小的文件,并且 90% 的图块是“脏”图块)。如果是这样,创建简单的磁贴引擎的更好方法是什么?
这是我第一次尝试发布问题。感谢任何提供帮助的人。
【问题讨论】:
标签: iphone objective-c xcode ios tiles