【问题标题】:separate class for drawing sprites, class doesn't work用于绘制精灵的单独类,类不起作用
【发布时间】:2012-05-05 18:58:22
【问题描述】:

我正在使用 cocos2d 开发一些示例游戏以进行更多练习,但我遇到了课程问题。这是我的例子:

someShapes.h

#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface palleteOfShapes : CCLayer 
{
    NSMutableArray *shapesArray;
}
@property (nonatomic,retain) NSMutableArray *shapesArray;
-(void)drawPallete;
@end

someShapes.m

#import "palleteOfShapes.h"

@implementation palleteOfShapes
@synthesize shapesArray;
-(void)drawPallete

{
    shapesArray = [NSMutableArray arrayWithObjects:@"Icon.png",@"A.png",@"questionMark.png",nil];
    for (int i=0; i<shapesArray.count; i++) {
        NSString *imagestring = [shapesArray objectAtIndex:i];
        CCSprite *sprite = [CCSprite spriteWithFile:imagestring];
         NSLog(@"i value: %i",i);
        sprite.position=ccp(100*i,350);
         NSLog(@"image added:%@",imagestring);
        [self addChild:sprite];
         NSLog(@"count: %d",[shapesArray count]);
    }        
    NSLog(@"pallete was completed");
    [shapesArray removeLastObject];
    NSLog(@"count:%d",[shapesArray count]);

}
@end

在我做的主层:

palleteOfShapes *newPallete = [[palleteOfShapes alloc]init];
[newPallete drawPallete];

我希望这些精灵会出现在我的主图层上,但他们没有。 NSLog 显示所有消息,但不显示精灵。

如果可以的话,请告诉我有什么问题。 提前致谢。

【问题讨论】:

    标签: iphone objective-c ios sprite


    【解决方案1】:

    您将精灵添加到“palleteOfShapes”层,但您从未将它们或“palleteOfShapes”添加到主层。

    【讨论】:

    • 好吧,我想如果我在主层调用 drawPallete,精灵会“认为”他们必须在主层上工作并在该层上绘制自己 :) 可能这是愚蠢的想法.你能告诉我如何将这些精灵从一个类添加到主层吗?
    • 你必须在场景中有东西才能直接或通过其他东西来绘制它们。在主层的 init 或任何方法中创建“newPallete”后,将其添加到主层:[self addChild:newPallete]。还要确保将主图层添加到场景中。
    • 哇,我不知道为什么我认为我不需要将它添加到场景中:D 现在一切正常,谢谢。
    【解决方案2】:

    实现-(id) init 方法并在那里尝试一些初始化。

    【讨论】:

    • 我在主层实现了init方法。如果我对我的托盘层做同样的事情,那么它将把所有东西都绘制在单独的层上,而不是主要的层上。我想。
    猜你喜欢
    • 2016-03-23
    • 2017-03-13
    • 2016-08-03
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多