我正在使用C4的alpha版本,我正在尝试在对象之间发送消息,但我无法使其工作。我试着用一个非常简单的例子,但我不能让它工作......我试过这个:
[ashape listenFor:@"touch" from:anothershape andRunMethod:@"receive"];
但是我没有收到任何消息或什么都没有......
这就是我所拥有的:
#import "MyShape.h"
@implementation MyShape
-(void)receive {
C4Log(@"this button");
}
@end
答案 0 :(得分:1)
我发现您发布的代码存在一个主要问题。
默认情况下,C4中的所有可见对象在点击时都会发布touchesBegan
通知。在您的代码中,您正在倾听@"touch"
,而@"touchesBegan"
则是您应该倾听的。
更改颜色方法易于实现...在MyShape.m文件中,您可以使用以下方法:
-(void)changeColor {
CGFloat red = RGBToFloat([C4Math randomInt:255]);
CGFloat green = RGBToFloat([C4Math randomInt:255]);
CGFloat blue = RGBToFloat([C4Math randomInt:255]);
self.fillColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0f];
}
为了让事情顺利进行,您的C4WorkSpace.m应如下所示:
#import "C4WorkSpace.h"
#import "MyShape.h"
@implementation C4WorkSpace {
MyShape *s1, *s2;
}
-(void)setup {
s1 = [MyShape new];
s2 = [MyShape new];
[s1 rect:CGRectMake(100, 100, 100, 100)];
[s2 rect:CGRectMake(300, 100, 100, 100)];
[s1 listenFor:@"touchesBegan" fromObject:s2 andRunMethod:@"changeColor"];
[s2 listenFor:@"touchesBegan" fromObject:s1 andRunMethod:@"changeColor"];
[self.canvas addShape:s1];
[self.canvas addShape:s2];
}
@end