我猜你得到錯誤的原因是因爲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
。
剛試過這個,它不起作用。在ios模擬器中,我看到的只是一個空白屏幕。 – jamesco 2012-04-19 17:00:21
嘿,對不起,我寫了,沒有測試它......我更新了上面的答案中的代碼,我測試了它,它在我的模擬器中工作。 – 2012-04-19 17:03:59
也適用於我的模擬器!謝謝 – jamesco 2012-04-19 17:05:40