StackOverflowのヘルプのおかげで、現在CAShapeLayerでパスをアニメーション化して、移動するスプライトから画面上の別の移動するポイントを指す三角形を作成しています。
アニメーションが完了すると、三角形が画面から消えます。このコードは各スプライトに対して0.1秒ごとに実行されるため、非常に短い期間を使用しています。その結果、赤い三角形は正しく追跡されますが、すばやく点滅するか、完全には表示されません。期間を長くすると、三角形が長く留まることがわかります。
tovalue
ある場所から次の場所にアニメーション化するためにメソッドが再度呼び出されるまで、三角形を現在のパス()で画面に表示したままにするにはどうすればよいですか?removeOnCompletionとremoveAllAnimationsを設定しようとしましたが、役に立ちませんでした。
以下のコード:
-(void)animateConnector{
//this is the code that moves the connector from it's current point to the next point
//using animation vs. position or redrawing it
//set the newTrianglePath
newTrianglePath = CGPathCreateMutable();
CGPathMoveToPoint(newTrianglePath, nil, pointGrid.x, pointGrid.y);//start at bottom point on grid
CGPathAddLineToPoint(newTrianglePath, nil, pointBlob.x, (pointBlob.y - 10.0));//define left vertice
CGPathAddLineToPoint(newTrianglePath, nil, pointBlob.x, (pointBlob.y + 10.0));//define the right vertice
CGPathAddLineToPoint(newTrianglePath, nil, pointGrid.x, pointGrid.y);//close the path
CGPathCloseSubpath(newTrianglePath);
//NSLog(@"PointBlob.y = %f", pointBlob.y);
CABasicAnimation *connectorAnimation = [CABasicAnimation animationWithKeyPath:@"path"];`enter code here`
connectorAnimation.duration = .007; //duration need to be less than the time it takes to fire handle timer again
connectorAnimation.removedOnCompletion = NO; //trying to keep the the triangle from disappearing after the animation
connectorAnimation.fromValue = (id)trianglePath;
connectorAnimation.toValue = (id)newTrianglePath;
[shapeLayer addAnimation:connectorAnimation forKey:@"animatePath"];
//now make the newTrianglePath the old one, so the next animation starts with the new position 2.9-KC
self.trianglePath = self.newTrianglePath;
}