アニメーションをリピート再生する方法

アニメーションをリピート再生するサンプルを作成しました。アニメーションの終了を検知したところで再度同じアニメーションを呼んでいます。

下記よりサンプルのダウンロードが行えます。

ダウンロード

ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#import "ViewController.h"

@interface ViewController ()

@property UIImageView *star;

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    //背景色を黒に設定
    self.view.backgroundColor = [UIColor blackColor];

    //星の画像を作成
    UIImage *image = [UIImage imageNamed:@"star.png"];
    _star = [[UIImageView alloc] initWithImage:image];
    _star.center = CGPointMake(self.view.center.x, -100);

    //星の画像を画面に追加
    [self.view addSubview:_star];
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    //画面表示と同時にアニメーションを開始する
    [self startAnimation];
}

- (void)startAnimation
{
    //星がはじめにある位置
    _star.center = CGPointMake(self.view.center.x, -100);

    //transform初期化
    _star.transform = CGAffineTransformIdentity;

    //アニメーションの定義開始
    [UIView beginAnimations:nil context:NULL];

    //デリゲートを自分自身に設定
    [UIView setAnimationDelegate:self];

    //アニメーションが停止した時のセレクタ指定
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

    //1回のアニメーションを2.0秒に設定する
    [UIView setAnimationDuration:2.0];

    //アニメーションのイージング指定
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

    //星の画像の目標値
    _star.center = CGPointMake(self.view.center.x, 300);
    CGAffineTransform transformScale = CGAffineTransformScale(CGAffineTransformIdentity, 5, 5);
    CGAffineTransform transformRotate = CGAffineTransformRotate(CGAffineTransformIdentity, M_PI);
    _star.transform = CGAffineTransformConcat(transformScale, transformRotate);

    //アニメーション実行
    [UIView commitAnimations];
}

- (void)animationDidStop:(NSString *)animationID
                finished:(NSNumber *)finished
                 context:(void *)context
{
    //アニメーションがキャンセルされずに完了した場合リピートする
    if ([finished boolValue]) {
        [self startAnimation];
    }
}

@end

お薦めの参考書

Cocos2d-xスマートフォン2Dゲーム開発講座 Cocos2d-x 3対応
Cocos2d-xを利用したスマートフォン向け3Dゲーム開発の手法を、サンプルを基に作りながら学ぶ事ができます。実際に遊べるゲームサンプルが4種収録されており、iOS / Android両対応のゲームを開発したい方には必見の一冊になっています。

   このエントリーをはてなブックマークに追加

About

Masaki Hirokawa (@dolice_apps)

デザインエンジニア 廣川政樹の開発ブログ。Objective-Cや Javaなど iPhone/Androidアプリ開発に関する技術情報を掲載しています。

iPhone apps

  • リラックス・ヒーリング(無料)
  • 望みが叶う!引き寄せの法則アプリ(無料)
  • ミステリー - 怖い話や不思議な体験、都市伝説まとめ
  • 浮世絵壁紙 - 美しい日本画ギャラリー(無料)
  • 綺麗な壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)
  • クールな壁紙HD iPhone 7/7 Plus/SE & iPod対応(無料)

Android apps

  • 浮世絵壁紙 - 美しい日本画ギャラリー
  • 綺麗な高画質壁紙

Objective-C Classes

Tag Cloud

ActionScript(9) ActionScript3(7) Ad(4) Adfurikun(2) AdMob(9) Android(10) Animation(17) AppDelegate(3) ARC(1) ArrayList(1) AVAudioPlayer(4) AVAudioSession(1) AVFoundation(3) Banner(2) Bitmap(1) Camera(4) CGAffineTransform(4) CGBlendMode(2) CGContextRef(1) CGImageRef(1) Classes(44) CLLocationManager(1) ConnectivityManager(1) ContentResolver(1) CoreLocation(2) Delegate(3) Device(7) Display(1) DisplayMetrics(1) Download(101) Facebook(6) Foundation(72) Framework(2) Google Analytics(1) Handler(1) iAd(6) ImageView(1) In-AppPurchase(1) iOS(12) iOS 7(15) iOS 7.1(3) iOS 8(1) iPad(7) iPhone(21) iPhone 6(4) Java(7) JavaScript(2) LINE(4) Localize(1) Magazine(1) MediaStore(1) MFComposeViewController(1) Nend(1) NetworkInfo(1) NSArray(23) NSCalendar(3) NSData(2) NSDate(7) NSDateComponents(2) NSDateFormatter(2) NSDictionary(12) NSEnumerator(1) NSIndexSet(1) NSInteger(6) NSMutableArray(17) NSMutableDictionary(5) NSMutableOrderedSet(7) NSMutableString(4) NSMutableURLRequest(1) NSNotificationCenter(1) NSNumber(1) NSObject(1) NSOrderedSet(7) NSRange(2) NSSelectorFromString(1) NSSet(6) NSString(19) NSTimer(4) NSTimeZone(1) NSURL(7) NSURLConnection(1) NSURLRequest(2) NSUserDefaults(7) NSXMLParser(2) Objective-C(222) PHP(1) Products(14) QuartzCore(3) RSS(2) Runnable(1) Sample(51) Screensaver(9) SDK(2) ShareCompat(1) Social(10) StoreKit(1) Twitter(6) UIAccelerometer(3) UIActionSheet(1) UIActivityIndicator(1) UIActivityIndicatorView(3) UIActivityViewController(1) UIAlertView(5) UIApplication(7) UIButton(4) UIColor(3) UIDatePicker(5) UIDevice(6) UIDeviceOrientation(1) UIEvent(6) UIImage(15) UIImagePickerController(4) UIImageView(12) UIKit(58) UILabel(7) UINavigationBar(4) UINavigationItem(1) UIPasteboard(4) UIScreen(1) UIScrollBar(1) UIScrollView(1) UISlider(3) UIStoryboardSegue(3) UISwitch(1) UITabBar(3) UITableView(4) UITextField(2) UIView(11) UIViewAnimationTransition(1) UIViewController(4) UIWebView(5) WindowManager(1) Xcode(48) Xcode 5(8) Xcode 5.1(2)