我猜你得到错误的原因是因为 setPosition 方法是因为你试图setPosition
直接在 C4Shape 对象上运行该方法。C4Shapes 本身没有这种方法。
在 C4 中,所有对象都可以附加手势,但是为了在您触发对象上的手势时运行任何自定义代码,您应该首先继承 C4Shape 并编写一个特殊方法来处理您想要看到的行为。
例如,我会像这样创建一个 MyShape 类:
@interface MyShape : C4Shape
-(void)setNewPosition;
@end
@implementation MyShape
-(void)setNewPosition {
//will set the center of the shape to a new random point
self.center = CGPointMake([C4Math randomInt:768], [C4Math randomInt:1024]);
}
@end
然后,在我的 C4WorkSpace 中:
#import "C4WorkSpace.h"
#import "MyShape.h"
@implementation C4WorkSpace {
MyShape *newShape;
}
-(void)setup {
newShape = [MyShape new];
[newShape ellipse:CGRectMake(100, 100, 200, 200)];
[newShape addGesture:TAP name:@"tapGesture" action:@"setNewPosition"];
[self.canvas addShape:newShape];
}
@end
这应该使用新的子类形状注册一个轻击手势,并在setNewPosition
触发手势时运行其方法。