在游戏移动时加载和卸载背景图像

时间:2011-02-17 22:38:36

标签: iphone objective-c background cocos2d-iphone

嘿伙计们, 我有一个raidan风格的2d飞行/战斗机游戏,我正在努力。 在将其从标准NSObject框架移动到Cocos2D后,我遇到了背景图像/精灵的问题。

在cocos2d之前,我的背景非常大。 320x9999(或其他)。但它加载了,它创造了一个非常大的幻觉。 Cocos2d的图像尺寸有限制,因此我被迫将图像切割成33个不同的背景图像,每个图像的尺寸为320x480。

了解内存在iOS平台上是一个大问题,我决定创建2个后台CCSprites: CCSprite * background1,* background2; Background2 ontop of background1。

使用这两个背景,当Jet向上移动屏幕时,每个背景将以相同的速率向下移动到屏幕上。当第一个background1完全从屏幕上移开时,它会被释放回内存并重新启动精灵加载到background1中,然后background1垂直位于background2之上。

当background2离开屏幕时,它会被释放,一个新图像被加载到background2中,它被放置在background1的顶部。

创造持续一致的背景幻觉。

Q值。这看起来像一个有效的方法吗? 问:我怎样才能以编程方式实现这样的目标?我有运动的物理学和一切准备就绪。我只是不确定如何使用Cocos做到这一点。

再次提前感谢!

2 个答案:

答案 0 :(得分:0)

我不完全确定你说的是什么,我认为你在谈论交换背景,一个背景变得活跃,另一个背景取下一部分的位置。这不是一种不常见的技术,类似于此的想法在很多方面被使用。 还搜索剪贴图,巨型纹理,图集纹理。

答案 1 :(得分:0)

A1)是的,这是一个有效的方法,这样做几乎很容易做ht ecode就像这样(我可能有一些编程错误,考虑这几乎就像一个psudo代码!):

if(background[1].position.y < 0)
{
    [layer removeChild:background[1] cleanup:YES];
    background[1] = background [2];
    background[2] = [CCSprite SpriteWithFile:"file id"]
    background[2].position = ccp(0,480);
    [background[2] runAction:[CCMoveBy actionWithDuration:1 position:ccp(0,1)]]
}

A2)如果您只需要一些指南,我会为您提供所需的实现,如果您的意思是您不知道如何使用cocos2d-iphone实现plysics的东西,请尝试以下手册:

http://www.raywenderlich.com/457/intro-to-box2d-with-cocos2d-tutorial-bouncing-balls

http://www.raywenderlich.com/475/how-to-create-a-simple-breakout-game-with-box2d-and-cocos2d-tutorial-part-12

http://www.raywenderlich.com/505/how-to-create-a-simple-breakout-game-with-box2d-and-cocos2d-tutorial-part-22

相关问题