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
、ジェスチャがトリガーされたときにそのメソッドが実行されます。