Fork me on GitHub

ccspriteMenu中不同状态的sprite不能是同一个

Please help me out.
I am able to build the code after many changes but it crashes in simulator.

-(id) initFromNormalSprite:(CCNode<CCRGBAProtocol>*)normalSprite
selectedSprite:(CCNode<CCRGBAProtocol>*)selectedSprite
activeSprite:(CCNode<CCRGBAProtocol>*)activeSprite
disabledSprite:(CCNode<CCRGBAProtocol>*)disabledSprite
name:(NSString*)name
target:(id)target selector:(SEL)selector
{
if (( self = [super initFromNormalSprite:normalSprite
selectedSprite:selectedSprite
disabledSprite:disabledSprite
target:target selector:selector]))
{
self.activeImage = activeSprite;
self.name = name;

// TODO, create an addSpriteFrameByName extension
CCSpriteFrameCache* fcache = [CCSpriteFrameCache sharedSpriteFrameCache];
NSString* glowName = @"frames-glow.png";
if([fcache spriteFrameByName: glowName]) {
} else {
CCTexture2D* glowTex = [[CCTexture2D alloc] initWithImage: [UIImage imageNamed:glowName]];
CCSpriteFrame* spriteFrame = [[CCSpriteFrame alloc] initWithTexture:glowTex
rect:CGRectMake(0,0,glowTex.pixelsWide,glowTex.pixelsHigh)];
//offset: ccp(0,0)];
[fcache addSpriteFrame:spriteFrame name:glowName];
[spriteFrame release];
[glowTex release];
}
self.glow = [CCSprite spriteWithSpriteFrameName:glowName];
self.showGlow = true;
}
return self;
}

I find the problem in these line

CCSprite* pane2 = [CCSprite spriteWithFile:[NSString stringWithFormat: @"%@-panel.png", currentName]];

NMPanelMenuItem* menuItem2 = [[NMPanelMenuItem alloc] initFromNormalSprite:pane2
                                                                    selectedSprite:pane2
                                                                      activeSprite:pane2
                                                                    disabledSprite:nil
                                                                              name:currentName
                                                                            target:self selector:@selector(levelPicked:)];

Try adding a different sprite to each state.

CCSprite* pane1 = [CCSprite spriteWithFile:[NSString stringWithFormat: @"%@-panel.png", currentName]];
CCSprite* pane2 = [CCSprite spriteWithFile:[NSString stringWithFormat: @"%@-panel.png", currentName]];
CCSprite* pane3 = [CCSprite spriteWithFile:[NSString stringWithFormat: @"%@-panel.png", currentName]];
CCSprite* pane4 = [CCSprite spriteWithFile:[NSString stringWithFormat: @"%@-panel.png", currentName]];

NMPanelMenuItem* menuItem2 = [[NMPanelMenuItem alloc] initFromNormalSprite:pane1
                                                                    selectedSprite:pane2
                                                                      activeSprite:pane3
                                                                    disabledSprite:pane4
                                                                              name:currentName
                                                                            target:self selector:@selector(levelPicked:)];

和ccAction一样,同一个ccAction只能一个持续运行,若想同时运行,用copy

 

ccPlace 等瞬间执行动作除外

 

 

 

 

 

posted on 2012-05-23 20:10  pengyingh  阅读(275)  评论(0)    收藏  举报

导航