嗨,大家好,我要创建6个精灵并将它们均匀地隔开,我编辑了从书中得到的一些代码,但是目前停留在需要将精灵均匀地隔开的部分
[groundNode setPosition:CGPointMake(45, 20)];
这会将所有6个Sprite彼此堆叠在一起?我怎样才能使它变成类似
[groundNode setPosition:CGPointMake(45*x, 20)];
其中x是从for循环中获取的int。我的代码在底部列出。非常感谢!!
-(id)init{
self = [super init];
if(self !=nil){
for(int x=0;x<6;x++){
[self createGround];
}
}
return self;
}
-(void) createGround{
int randomGround = arc4random()%3+1;
NSString *groundName = [NSString stringWithFormat:@"ground%d.png", randomGround];
CCSprite *groundSprite = [CCSprite spriteWithFile:groundName];
[self addChild:groundSprite];
[self resetGround:groundSprite];
}
-(void) resetGround:(id)node{
CGSize screenSize =[CCDirector sharedDirector].winSize;
CCNode *groundNode = (CCNode*)node;
[groundNode setPosition:CGPointMake(45, 20)];
}
最佳答案
第一步是构建那些采用offsetIndex参数的方法:
-(void) createGroundWithOffsetIndex: (int) offsetIndex {
-(void) resetGround: (CCNode *) node withOffsetIndex: (int) offsetIndex {
然后,在createGround中,将其传递给:
[self resetGround:groundSprite withOffsetIndex: offsetIndex];
并从循环中传递它:
for(int x=0;x<6;x++){
[self createGroundWithOffsetIndex:x];
}
最后,您知道要使用的代码段(在resetGround:withOffsetIndex:内部):(请注意+1,因为偏移量(按语义)从零开始)
[groundNode setPosition:CGPointMake(45 * offsetIndex+1, 20)];
一些注意事项:
请仔细考虑这里需要进行多少次传递,然后尝试考虑一种改进的体系结构:如果要平铺相同的图像,也许createGround应该采用CGRect并负责填充那么多区域?
这只是水平的;我将其作为传递CGPoints(或类似的{x,y}结构)作为offsetIndex的练习。
您的投放模式是边界线。为什么将其作为id传递,然后将其转换为另一个本地var,而将其作为另一种类型呢?我想那...