MacでCocos2Dで遊んでいます。
NSColorWell ボタンで IntefaceBuilder を使用しています。私の AppDelegate には、Settings というシングルトンで背景色を設定するための IBAction があります。次に、AnimationLayer のメソッドを呼び出しupdateBackgroundColor
て更新します。しかし、それは失敗し、クラッシュします。
AnimationLayer メソッドにメッセージを送信できないのはなぜですか?
AppDelegate はすでに AnimationLayer について知っているので、これはメソッドを呼び出す適切な方法ではありませんか?[(AnimationLayer*) self methodNameHere];
AppDeletgate.m
- (IBAction)colorwellBackground:(id)sender {
[mySettings setBackgroundColor:[sender color]];
[(AnimationLayer*) self updateBackgroundColor];
}
AnimationLayer.m
// Import the interfaces
#import "AnimationLayer.h"
// HelloWorldLayer implementation
@implementation AnimationLayer
+(CCScene *) scene {
CCScene *scene = [CCScene node];
AnimationLayer *layer = [AnimationLayer node];
[scene addChild: layer];
return scene;
}
// on "init" you need to initialize your instance
-(id) init {
if( (self=[super init]) ) {
mySettings = [Settings sharedSettings];
//DEFAULT BACKGROUND COLOR
_backgroundColorLayer = [mySettings returnBackgroundColor];
[self addChild:_backgroundColorLayer];
}
return self;
}
- (void) updateBackgroundColor{
NSLog(@"UPDATE BACKGROUND COLOR %@", [mySettings returnBackgroundColor]);
[_backgroundColorLayer setColor:[mySettings returnBackgroundColor]];
}