更新的问题
让我感到困惑的东西。调用时,下面的方法显示对象的正确地址,但是我之前单击的按钮中的标记。所以需要两次点击才能获得当前对象的标记...
CCMenuItemImage itemWithNormalImage:@"1_Maj_DA.png"
selectedImage:@"1_Maj.png"
disabledImage: nil block:^(id sender){
NSLog(@"Button tapped: %@", sender);
}];
在应用程序的“设置菜单”部分中,我正在调用方法
-(void)loadUIWithRespectToIndex:(int)buttonIndex
在不同的设置视图之间切换,如下所示:
else if(buttonIndex == 5){
if(isFreeModeSet)
{
return;
}
[self removeOtherOptionsExceptWithIndex:5];
isFreeModeSet = YES;
CCMenuItemImage *unisonBtn = [CCMenuItemImage itemWithNormalImage:@"1_Maj_DA.png"
selectedImage:@"1_Maj.png"
disabledImage: nil target:self selector:@selector(intervalButtonTapped:)];
[unisonBtn setAnchorPoint:ccp(0.5f, 0.5f)];
[unisonBtn setTag:0];
CCMenuItemImage *maj2Btn = [CCMenuItemImage itemWithNormalImage:@"2_Maj_DA.png"
selectedImage:@"2_Maj.png"
disabledImage:nil
target:self selector:@selector(intervalButtonTapped:)];
[maj2Btn setAnchorPoint:ccp(0.5f, 0.5f)];
[maj2Btn setTag:2];
等...
从这些按钮我构成一个菜单:
CCMenu *freeModeIntervalMenuMajor = [CCMenu menuWithItems:unisonBtn, maj2Btn, maj3Btn, maj4Btn, maj5Btn, maj6Btn, maj7Btn, maj8Btn, nil];
[freeModeIntervalMenuMajor setPosition:ccp(scrollViewSecondSprite_.contentSize.width*0.5, scrollViewSecondSprite_.contentSize.height*0.5)];
[freeModeIntervalMenuMajor alignItemsHorizontallyWithPadding: 10];
[scrollViewSecondSprite_ addChild:freeModeIntervalMenuMajor z:10 tag:9800];
然后是那些按钮调用的方法声明:
-(void)intervalButtonTapped:(CCMenuItemImage*)sender
{
NSLog(@"Button tapped: %@", sender);
}
每次调用此方法时,来自intervalButtonTapped的NSLog:显示上一次“click”的地址和标记。它总是落后一趟。好像只在调用NSLog方法后才分配发送方。我尝试了一个带有块的CCMenuItemImage版本,但结果相同。