iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
駒の移動にアニメーションを施す。
前回のサンプル・コードでは、駒のフレームに、移動先のマスのフレームを設定していた。これをアニメーションに変更する。
ゲームコントローラで、駒の移動をGamePieceViewのメソッドmoveWithSquare:に変更する。
@implementation GameController
...
- (void)gameBoardViewTouchUp:(GameBoardView *)gameBoardView location:(CGPoint)touchPt taps:(int)taps event:(UIEvent*)event
{
if (self.pieceView) {
GameSquare *square = [self.gameBoardView squareAtPoint:touchPt];
[self.pieceView moveWithSquare:square]; ←変更
}
self.pieceView = nil;
}
...
@end
moveWithSquare:メソッドの処理内容は以下の通り。
@implementation GamePieceView
...
- (void)moveWithSquare:(GameSquare *)square
{
CGRect frame = [square frame];
[self moveFrame:frame];
}
- (void)moveFrame:(CGRect)frame
{
CABasicAnimation *theAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
CGPoint fromPt = self.layer.position;
CGPoint toPt = CGPointMake(frame.origin.x + (frame.size.width / 2.0),
frame.origin.y + (frame.size.height / 2.0));
theAnimation.fromValue = [NSValue valueWithCGPoint:fromPt];
theAnimation.toValue = [NSValue valueWithCGPoint:toPt];
theAnimation.delegate = self;
[self.layer addAnimation:theAnimation forKey:@"animatePosition"];
self.layer.frame = frame;
}
...
@end
ドラッグして指を離すと、アニメーションしてマスに駒がはまるようになったと思う。