我开始为Android构建一个运行游戏应用程序。我选择使用瓷砖和Adobe Air在闪存中制作它。游戏是玩家应该自动向右跑,并通过在地面上跳跃或滑动来避开一些障碍。
我已经创建了一个函数,它始终采用数组中的第一级并用作起始级别。
private function createLevel()
{
map_level.levell();
level = map_level.level1;
for(var t = 0; t < level.length; t++)
{
for(var u = 0; u < level[t].length; u++)
{
if(level[t][u] != 0)
{
var new_tile:platform_tile = new platform_tile;
addChild(new_tile);
new_tile.gotoAndStop(level[t][u]);
new_tile.x = u * 32;
new_tile.y = t * 32;
tiles.push(new_tile);
}
}
}
total_tile_width += u;
}
然后我创建了一个在路径数组中采用随机级别的函数。
private function random_level ()
然后当玩家沿着轨道达到一定长度时,在第一首曲目的末尾添加该等级,然后该曲目似乎无穷无尽,然后使得摄像机跟随玩家。
private function update_level ()
{
random_level();
for(var t = 0; t < mid_lvl.length; t++)
{
for(u = 0; u < mid_lvl[t].length; u++)
{
if(mid_lvl[t][u] != 0)
{
var new_tile:platform_tile = new platform_tile;
level[t][u + total_tile_width] = mid_lvl[t][u];
addChild(new_tile);
new_tile.gotoAndStop(mid_lvl[t][u]);
new_tile.x = (u + total_tile_width) * 32;
new_tile.y = t * 32;
tiles.push(new_tile);
}
}
}
// Indstiller hvis spilleren skal have en stigende fart
if( movementspeed < 40)
{
movementspeed = movementspeed + 2;
}
else
movementspeed = movementspeed;
total_tile_width += u;
trace ("speed: " + movementspeed);
}
所有这一切都可以正常工作,游戏功能也很完美,但电话似乎很快就超载它,因为我无法弄清楚如何移除已经播放的旧关卡,因此会有手机内存中有很多级别。
我需要像removeChild这样的东西(“旧瓷砖再次离开舞台)但是没有想法如何只找到旧的瓷砖而不仅仅是所有瓷砖。
有人能帮助我吗?顺便说一句,希望你理解我的问题,因为我不是最好写英文的。
的Morten
答案 0 :(得分:0)
您必须使用2个BitmapData对象。
然后:
现在我们开始滚动
继续增加偏移并交替使用screenBuffer1和screenBuffer2,这样当你在另一个上绘制时,一个是可见的
当偏移到达瓷砖的地方时:
if(offset>tileWidth){
offset-=tileWidth;
// Move content of terrainBuffer to the left by tileWidth pixels
// Draw a new column of tile on the right
}
然后继续循环!