C4哪个形状被点击了?

时间:2013-10-23 10:39:12

标签: touch interaction c4

我在C4应用的画布上添加了42个形状。如何确定用户触摸了哪一个形状?

我按如下方式添加形状:

#import "C4Workspace.h"

@implementation C4WorkSpace{
    C4Shape *greyRect;
}

-(void)setup {
    int imageWidth=53.53;
    int imageHeight=65.1;
    for (int i=0; i<42; i++) {
        int xMultiplier=(i)%6;
        int yMultiplier= (i)/6;
        int xPos=xMultiplier*imageWidth;
        int yPos=yMultiplier*imageHeight;
        greyRect=[C4Shape rect:CGRectMake(xPos, yPos, imageWidth, imageHeight)];
        greyRect.fillColor=[UIColor colorWithRed:0 green:0 blue:0 alpha:0];
        greyRect.lineWidth=2;
        greyRect.strokeColor=[UIColor colorWithRed:0.7 green:0 blue:0 alpha:1];
        [self listenFor:@"touchesBegan" fromObject:greyRect andRunMethod:@"highlightLetter"];

        [self.canvas addShape:greyRect];
    }
}

-(void)highlightLetter{
    C4Log(@"highlightLetter");
}

@end

我几乎只需要知道点击的矩阵有哪个数字[i]。

但我不知道如何在运行该行后访问该行:[self listenFor:@"touchesBegan" fromObject:greyRect andRunMethod:@"highlightLetter"];

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

查看C4网站上的通知教程的WHO SAID WHAT?部分。

这部分通知教程解释了如何对给定对象的通知作出反应,并实际确定哪个对象只是广播该通知。

诀窍在于构建一个接受通知的方法:

-(void)highlightLetter:(NSNotification *)notification {
    C4Shape *shape = (C4Shape *)notification.object;
    //do stuff to the shape
}

另外,请记住因为该方法采用 变量,您必须在方法名称中包含:,如下所示:

[self listenFor:@"touchesBegan" 
     fromObject:greyRect 
   andRunMethod:@"highlightLetter:"];