あなたの質問では、次の方法を尋ねています。
- オブジェクトのプロパティを更新します
- それを移動
- 同じオブジェクトのプロパティを更新します
- フェードアウト
...画面に触れたときに別の場所に再表示できるようにします。
また、これを1つの方法で実行したい...
この問題を解決するために別のアプローチを取ることをお勧めします。
まず、図形を、削除または破棄するまで永続するオブジェクトと考えてみてください。基本的に、オブジェクトはさまざまなメソッドに渡されるものとして扱うことができます。
このように考え始めたら、次のテクニックを使用して、探している効果を作成できます。
#import "C4WorkSpace.h"
@implementation C4WorkSpace
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *t in touches) {
CGPoint touchPoint = [t locationInView:self.canvas];
[self createObjectAtPoint:touchPoint];
}
}
-(void)createObjectAtPoint:(CGPoint)newPoint {
C4Shape *s = [C4Shape ellipse:CGRectMake(newPoint.x-25,newPoint.y-25,50,50)];
s.userInteractionEnabled = NO;
[self.canvas addShape:s];
[self runMethod:@"fadeAndRemoveShape:" withObject:s afterDelay:0.0f];
}
-(void)fadeAndRemoveShape:(C4Shape *)shape {
shape.animationDuration = 1.0f;
shape.alpha = 0.0f;
[shape runMethod:@"removeFromSuperview" afterDelay:shape.animationDuration];
}
@end
これは何をしますか:
- タッチポイントを取得します
- タッチポイントをシェイプを作成するメソッドに渡します
- 作成されたシェイプをフェードアウトするメソッドに渡します
- 消えたときにキャンバスから形状を削除します
- 画面から削除された後、形状は自動的にメモリから削除されます