首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCSpriteBatchNode

CCSpriteBatchNode
EN

Stack Overflow用户
提问于 2011-05-03 17:59:22
回答 1查看 3.4K关注 0票数 0

我正在创建一个名为Player的类...在初始化方法中,我想使用一个CCSpriteBatchNode:

代码语言:javascript
复制
@interface Player : CCNode {

    CCSprite *player;
    CCSpriteBatchNode *spriteSheet;
    CCAction *walkAction;
    int playerSpeed;
    int xPos;
    int yPos;

}
@property (nonatomic, retain) CCSprite *player;

@property (nonatomic, retain) CCSpriteBatchNode *spriteSheet;

@property (nonatomic, retain) CCAction *walkAction;

@property int playerSpeed;

@property int xPos;

@property int yPos;


-(id)init {

    if( (self=[super init] )) {

        playerSpeed = 70;
        xPos = 160;
        yPos = 10;
        [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bugA.plist"];
        spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"bugA.png"];
        [player useBatchNode:spriteSheet];
        NSMutableArray *walkAnimFrames = [NSMutableArray array];
        for (int i = 1; i <= 8 ; ++i) {
            [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bug%d.png", i]]];
        }
        CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];
        player = [CCSprite spriteWithSpriteFrameName:@"bug1.png"];
        walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];
        [player runAction:walkAction];

        [spriteSheet addChild:player];
    }
    return self;
}

然后在HelloWorldScene中,我想使用这个带有动画的类

代码语言:javascript
复制
Player *pl = [Player node];

[self addChild:pl.player];

但是什么都不起作用。我做错了什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-05-04 21:02:35

下面是经过一些修改的代码

代码语言:javascript
复制
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"bugA.plist"];
spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"bugA.png"];

//add :
[self addChild:spriteSheet];

//instead of :
[player useBatchNode:spriteSheet];

NSMutableArray *walkAnimFrames = [NSMutableArray array];
for (int i = 1; i <= 8 ; ++i) {
    [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"bug%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f];
player = [CCSprite spriteWithSpriteFrameName:@"bug1.png"];

//add to show the player in the middle of the screen
CGSize winSize = [CCDirector sharedDirector].winSize;
player.position = ccp(winSize.width/2, winSize.height/2);       

walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]];
[player runAction:walkAction];

[spriteSheet addChild:player];

要使用此代码,只需调用

代码语言:javascript
复制
Player *pl = [Player node];

[self addChild:pl];

你有没有试着把你的类叫做[self addChild:pl];而不是[self addChild:pl.player];

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5867881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档