大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!
放置地鼠
对于这个游戏,你将要在场景中添加3只地鼠 — 每个洞一只.地鼠一般躲在草丛中的洞里 — 但会偶尔弹出来,所以你可以狠K它们喽.
首先,让我们在每个洞里添加一只地鼠.我们将临时让它们出现在草丛上以便确保我们把它们放到了正确的位置上,一旦我们设置好其位置.我们将把它们放到洞里面去.
打开HelloWorldLayer.h添加一个在关卡中保持地鼠的数组,如下所示:
// Inside @interface HelloWorld
NSMutableArray *moles;
将地鼠存储在数组中,可以让我们在之后遍历它们更加容易.
接下来,在你的init方法的末尾(在”Add more here later…”的位置)放置以下代码:
// Load sprites
CCSpriteBatchNode *spriteNode = [CCSpriteBatchNode batchNodeWithFile:sSheet];
[self addChild:spriteNode z:999];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:sPlist];
moles = [[NSMutableArray alloc] init];
CCSprite *mole1 = [CCSprite spriteWithSpriteFrameName:@"mole_1.png"];
mole1.position = [self convertPoint:ccp(85, 85)];
[spriteNode addChild:mole1];
[moles addObject:mole1];
CCSprite *mole2 = [CCSprite spriteWithSpriteFrameName:@"mole_1.png"];
mole2.position = [self convertPoint:ccp(240, 85)];
[spriteNode addChild:mole2];
[moles addObject:mole2];
CCSprite *mole3 = [CCSprite spriteWithSpriteFrameName:@"mole_1.png"];
mole3.position = [self convertPoint:ccp(395, 85)];
[spriteNode addChild:mole3];
[moles addObject:mole3];
以上代码首先为每个精灵创建了一个CCSpriteBatchNode,所以我们可以绘制3个地鼠更加有效率,然后把该节点作为子节点添加到层中.注意它的z序被临时设置为999.这样可以方便清楚的确认地鼠摆放的位置.
然后代码从属性列表中加载所有精灵帧到内存中来,以便后面快速的取出.
接下来为每个洞创建一只地鼠,把它们放置在场景中,同时将它们添加到moles列表中.注意每一只地鼠的坐标系都在480x320的”可玩区域”之中(iPhone的大小).对于ipad来说.这些点的位置将被convertPoint方法转换,如下所示:
- (CGPoint)convertPoint:(CGPoint)point {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return ccp(32 + point.x*2, 64 + point.y*2);
} else {
return point;
}
}
该方法将”可玩区域”中的点转换到ipad屏幕中的合适位置,记住:
- 我们在ipad中使用高清图片,所以所有点都被×2.
- 我们在ipad1024x768的屏幕中将960x640的区域居中,所以将在顶部和底部各空出32和64个像素.
说白了,该方法只是用简单的算法将给定点转换到ipad上去.
还有一件事 — 在我们忘记以前,将如下清理内存的代码添加到dealloc方法中(在开启ARC的代码中,可以无视.猫猪注.):
[moles release];
moles = nil;
编译运行你的代码,你应该看到3只地鼠愉快的出现在场景正确的位置上!你同样应该在不同设备上都试试,确保他们的位置都正确.