大多数关于 cocos2d 按钮的讨论似乎都指向 CCMenu,其中 CCMenu AFAIK 意味着在屏幕中心有一行或一列。我需要在屏幕上随机放置按钮,但还没有找到一个简单的开箱即用解决方案。我确实尝试了 CCControlButton 但没有让它工作(CCScale9Sprite spriteWithSpriteFrameName 从 sprite atlas 加载不正确)。
问问题
115 次
2 回答
1
现在我尝试使用它。它在每个 CCMenu 中只使用一个按钮。所以我的屏幕会有很多 CCMenu 实例,每个按钮一个。
+(CCMenu*)button:(NSString*)spriteframename at:(const CGPoint)POINT block:(void(^)(id sender))block {
CCSprite* sprite1 = [CCSprite spriteWithSpriteFrameName:spriteframename];
CCSprite* sprite2 = [CCSprite spriteWithSpriteFrameName:spriteframename];
CCMenuItem* menuitem = [CCMenuItemImage itemWithNormalSprite:sprite1 selectedSprite:sprite2 block:block];
CCMenu* menu = [CCMenu menuWithItems:menuitem, nil];
menu.contentSize = sprite1.contentSize;
menu.position = POINT;
return menu;
}
于 2013-04-01T11:29:45.737 回答
0
这是我改用的更好方法。
把它放在像init中:
CCMenuItem* menuitemRetry = [[self class] buttonWithSpriteframenameOff:@"retry_off.png" on:@"retry_on.png" at:ccp(198, 184) block:^(id sender) {
// Do something
}];
CCMenuItem* menuitemMenu = [[self class] buttonWithSpriteframenameOff:@"menu_off.png" on:@"menu_on.png" at:ccp(362, 184) block:^(id sender) {
// Do something else
}];
CCMenu* menuLow = [CCMenu menuWithItems:menuitemMenu, menuitemRetry, nil];
menuLow.position = CGPointZero;
[self addChild:menuLow];
这也需要
+(CCMenuItem*)buttonWithSpriteframenameOff:(NSString*)spriteframenameOff on:(NSString*)spriteframeOn at:(const CGPoint)POINT block:(void(^)(id sender))block {
CCMenuItem* menuitem = [CCMenuItemImage itemWithNormalSprite:[CCSprite spriteWithSpriteFrameName:spriteframenameOff] selectedSprite:[CCSprite spriteWithSpriteFrameName:spriteframeOn] block:block];
menuitem.position = POINT;
return menuitem;
}
于 2013-04-02T07:20:00.573 回答