SlideShare una empresa de Scribd logo
1 de 26
第 3 の選択: Core Animation


         越智 修司

       @ponpoko1968
越智修司           (@ponpoko1968)
•   前半 GM とか SE(2004 年〜 2006 年 )

    •   FeliCa, 銀行 (i アプリバンキング )

    •   EAN128 バーコードリーダ

•   最近は専ら開発

    •   きせかえ多機種展開

    •   iOS アプリ

        •    倖田來未

        •    ワタナベガールズ

    •       データ分析

•   Cocoa 勉強会関西

•   関西ソーシャルゲーム勉強会
クリップリーダー
PDF/ コミックリーダー
勤怠くん
洋ゲー大好き♪
 •   ゲーマータグ
     •   ponpoko1968
Core Animation とは


   MacOSX/iOS で使用できる
   アニメーション
   フレームワーク
   iOS の UI 部品は Core Animation の
      ラッパ
ポテンシャルの割に使われてない
特徴 その1

•   layer = スプライトのような概念

    •   画面全体を覆うようなものではない

•   layer は階層化できる

•   標準の UI 部品の属性はほとんど animatable

    •   位置・大きさ

    •   色・透過

    •   回転

•   ネイティブ UI をシームレスにアニメーションで
    きる
デモ(1)
•   UI にスパイスを。。。
たった数行
影
targetView.layer.shadowOffset = CGSizeMake(2.0, 2.0);
targetView.layer.shadowColor = [[UIColor blackColor] CGColor];
targetView.layer.shadowOpacity = 0.65;



角丸
targetView.layer.cornerRadius = self.cornerSlider.value;
特徴 その2




トランザクショナル &MVC な
 プログラミングモデル
MV(C) +時間


presentation




Model

                                   未来時点の
               今の状態               あるべき状態




時間             t1                   t2
デモ (2)
2 つの属性をアニメーションさせる


content




                y1
                                     y1

position




                            y2



時間         t1                            t2
トランザクションの記述例

[CATransaction begin];

CAKeyframeAnimation* animation = [CAKeyframeAnimation :
animationWithKeyPath:@"position"];

animation.duration = ANIMATION_DURATION;

animation.values = positions;// 配列

animation.repeatCount = 5; // たとえば5回繰り返す

animation.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseOut];

[layer addAnimation:animation forKey:nil];

....

[CATransaction commit];
応用例




•   Web ラッパーのカットインムービー
Web の画面遷移をフックする方法


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:
(NSURLRequest *)request navigationType:
(UIWebViewNavigationType)navigationType

{

Log(@"[%d]request=%@",navigationType,request);

    if( navigationType   == 0 )

     [self startAnimation];

    return YES;

}
アニメーションの終了後に実行


[CATransaction setCompletionBlock:^{

     if( self._delayedRequest ){

          self._owlView.hidden = YES;

         [self.webView loadRequest:self._delayedRequest];

     }

   }];
デモ (3)
課題




オーサリングツールが無い
対策

•   手動でがんばる
•   オーサリングツールを作る
•   既存のオーサリングツールが出力する形
    式をインポートする
•   既存のアニメーション形式
    •   Flash
    •   sprite studio
Flash
•   もともと Core Animation は Flash を参考にし
    た節がある。
•   相当する描画プリミティブも用意されて
    いる
•   SWF ファイルをパースするライブラリを
    用いて、内部データをキーフレームにご
    とに切り出せば理論上は可能
第 3 の選択:
1. がっつり作って没入型インタフェー
   スを持つアプリ /UI を作る
   (OpenGLES, Unity,Cocos2D)
2. HTML5+canvas / CSS3
3. 場合によっては Core Animation
まとめ
•   自動で補間してくれるためコード上の記
    述が簡単
•   iOS の UI とシームレス
•   結構強力なアニメーションができる
•   GPU 連携(たぶん)しているので軽量
•   あらかじめ動きを決めてから、アニメー
    ション刺せるというモデルのため、アク
    ションゲームのキャラクタ表示などには
    不向き( Web でいうと CSS3 に近いイメー
    ジ)
ご清聴ありがとうございました
参考文献

•       CA360(Core Animation の Demo)
    •      https://github.com/neror/CA360


•       steps to phantasien
    •      WebKit CSS と core animation の関係
    •      http://stepped.dodgson.org/?date=20090822


•       @nakiwo 氏のスライド
    •      「 Core Animation part1 」
    •      http://www.slideshare.net/yuichi_fujishige/core-animation-part1

    •      「 CAKeyframeAnimation 」
    •      http://www.slideshare.net/yuichi_fujishige/cakeyframeanimation

Más contenido relacionado

Destacado

スペースハルク
スペースハルクスペースハルク
スペースハルクOCHI Shuji
 
神戸AEDマップの紹介
神戸AEDマップの紹介神戸AEDマップの紹介
神戸AEDマップの紹介OCHI Shuji
 
iOS ジオフェンシングで簡単リアル連動
iOS ジオフェンシングで簡単リアル連動iOS ジオフェンシングで簡単リアル連動
iOS ジオフェンシングで簡単リアル連動OCHI Shuji
 
第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析
第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析
第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析OCHI Shuji
 
Cocoa勉強会pdf関連
Cocoa勉強会pdf関連Cocoa勉強会pdf関連
Cocoa勉強会pdf関連OCHI Shuji
 
第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス
第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス
第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンスOCHI Shuji
 
デブサミ関西2013 「ソーシャルゲームのデータサイエンス」
デブサミ関西2013 「ソーシャルゲームのデータサイエンス」デブサミ関西2013 「ソーシャルゲームのデータサイエンス」
デブサミ関西2013 「ソーシャルゲームのデータサイエンス」OCHI Shuji
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
第1回関西ソーシャルゲーム勉強会 kpi発表
第1回関西ソーシャルゲーム勉強会 kpi発表第1回関西ソーシャルゲーム勉強会 kpi発表
第1回関西ソーシャルゲーム勉強会 kpi発表OCHI Shuji
 
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LTソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LTOCHI Shuji
 

Destacado (11)

スペースハルク
スペースハルクスペースハルク
スペースハルク
 
Manual en
Manual enManual en
Manual en
 
神戸AEDマップの紹介
神戸AEDマップの紹介神戸AEDマップの紹介
神戸AEDマップの紹介
 
iOS ジオフェンシングで簡単リアル連動
iOS ジオフェンシングで簡単リアル連動iOS ジオフェンシングで簡単リアル連動
iOS ジオフェンシングで簡単リアル連動
 
第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析
第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析
第3回関西ソーシャルゲーム勉強会 アクセス時間帯の分析
 
Cocoa勉強会pdf関連
Cocoa勉強会pdf関連Cocoa勉強会pdf関連
Cocoa勉強会pdf関連
 
第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス
第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス
第4回関西ソーシャルゲーム勉強会 ソーシャルゲームのビジネスインテリジェンス
 
デブサミ関西2013 「ソーシャルゲームのデータサイエンス」
デブサミ関西2013 「ソーシャルゲームのデータサイエンス」デブサミ関西2013 「ソーシャルゲームのデータサイエンス」
デブサミ関西2013 「ソーシャルゲームのデータサイエンス」
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
第1回関西ソーシャルゲーム勉強会 kpi発表
第1回関西ソーシャルゲーム勉強会 kpi発表第1回関西ソーシャルゲーム勉強会 kpi発表
第1回関西ソーシャルゲーム勉強会 kpi発表
 
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LTソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
ソーシャルゲームのデータ分析基盤としてのAWS Jaws ug三都物語LT
 

Similar a Core Animation 使って見た

㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!Nishida Kansuke
 
LIFULL HOME'S「かざして検索」リリースの裏側
LIFULL HOME'S「かざして検索」リリースの裏側LIFULL HOME'S「かざして検索」リリースの裏側
LIFULL HOME'S「かざして検索」リリースの裏側Takuro Hanawa
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルHiroaki Wakamatsu
 
try! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core Animationtry! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core AnimationTim Oliver
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashYasunobu Ikeda
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Yoshito Tabuchi
 
ロボコンの為のFusion360講座 vol2.レンダリング編
ロボコンの為のFusion360講座 vol2.レンダリング編ロボコンの為のFusion360講座 vol2.レンダリング編
ロボコンの為のFusion360講座 vol2.レンダリング編Ryo Takahashi
 
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」Yasunobu Ikeda
 
Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法Nishida Kansuke
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesTakeshi Komiya
 
JavaScriptでいいじゃなイカ
JavaScriptでいいじゃなイカJavaScriptでいいじゃなイカ
JavaScriptでいいじゃなイカYuuichi Akagawa
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
Unityの夕べ in Fukuoka
Unityの夕べ in FukuokaUnityの夕べ in Fukuoka
Unityの夕べ in FukuokaShinobu Izumi
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesHironori Washizaki
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた徹 上野山
 
アニメーション(のためのパフォーマンス)の基礎知識
アニメーション(のためのパフォーマンス)の基礎知識アニメーション(のためのパフォーマンス)の基礎知識
アニメーション(のためのパフォーマンス)の基礎知識Yosuke Onoue
 

Similar a Core Animation 使って見た (20)

㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
 
LIFULL HOME'S「かざして検索」リリースの裏側
LIFULL HOME'S「かざして検索」リリースの裏側LIFULL HOME'S「かざして検索」リリースの裏側
LIFULL HOME'S「かざして検索」リリースの裏側
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
 
try! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core Animationtry! Swift - Advanced Graphics with Core Animation
try! Swift - Advanced Graphics with Core Animation
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlash
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
 
ロボコンの為のFusion360講座 vol2.レンダリング編
ロボコンの為のFusion360講座 vol2.レンダリング編ロボコンの為のFusion360講座 vol2.レンダリング編
ロボコンの為のFusion360講座 vol2.レンダリング編
 
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
F-site発表資料「Flashユーザーが今覚えておきたいHTML5」
 
UE4.17で入る新機能を一気に紹介・解説!
UE4.17で入る新機能を一気に紹介・解説!UE4.17で入る新機能を一気に紹介・解説!
UE4.17で入る新機能を一気に紹介・解説!
 
Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法Cocos2dを使ったi phoneゲーム開発手法
Cocos2dを使ったi phoneゲーム開発手法
 
Inside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfesInside of excel 方眼紙撲滅委員会 #pyfes
Inside of excel 方眼紙撲滅委員会 #pyfes
 
JavaScriptでいいじゃなイカ
JavaScriptでいいじゃなイカJavaScriptでいいじゃなイカ
JavaScriptでいいじゃなイカ
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
Unityの夕べ in Fukuoka
Unityの夕べ in FukuokaUnityの夕べ in Fukuoka
Unityの夕べ in Fukuoka
 
Storyboard
StoryboardStoryboard
Storyboard
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principles
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
 
アニメーション(のためのパフォーマンス)の基礎知識
アニメーション(のためのパフォーマンス)の基礎知識アニメーション(のためのパフォーマンス)の基礎知識
アニメーション(のためのパフォーマンス)の基礎知識
 

Último

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (10)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

Core Animation 使って見た

  • 1. 第 3 の選択: Core Animation 越智 修司 @ponpoko1968
  • 2. 越智修司 (@ponpoko1968) • 前半 GM とか SE(2004 年〜 2006 年 ) • FeliCa, 銀行 (i アプリバンキング ) • EAN128 バーコードリーダ • 最近は専ら開発 • きせかえ多機種展開 • iOS アプリ • 倖田來未 • ワタナベガールズ • データ分析 • Cocoa 勉強会関西 • 関西ソーシャルゲーム勉強会
  • 5. 洋ゲー大好き♪ • ゲーマータグ • ponpoko1968
  • 6. Core Animation とは MacOSX/iOS で使用できる アニメーション フレームワーク iOS の UI 部品は Core Animation の ラッパ
  • 8. 特徴 その1 • layer = スプライトのような概念 • 画面全体を覆うようなものではない • layer は階層化できる • 標準の UI 部品の属性はほとんど animatable • 位置・大きさ • 色・透過 • 回転 • ネイティブ UI をシームレスにアニメーションで きる
  • 9. デモ(1) • UI にスパイスを。。。
  • 10. たった数行 影 targetView.layer.shadowOffset = CGSizeMake(2.0, 2.0); targetView.layer.shadowColor = [[UIColor blackColor] CGColor]; targetView.layer.shadowOpacity = 0.65; 角丸 targetView.layer.cornerRadius = self.cornerSlider.value;
  • 11. 特徴 その2 トランザクショナル &MVC な プログラミングモデル
  • 12. MV(C) +時間 presentation Model 未来時点の 今の状態 あるべき状態 時間 t1 t2
  • 15. トランザクションの記述例 [CATransaction begin]; CAKeyframeAnimation* animation = [CAKeyframeAnimation : animationWithKeyPath:@"position"]; animation.duration = ANIMATION_DURATION; animation.values = positions;// 配列 animation.repeatCount = 5; // たとえば5回繰り返す animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; [layer addAnimation:animation forKey:nil]; .... [CATransaction commit];
  • 16. 応用例 • Web ラッパーのカットインムービー
  • 17. Web の画面遷移をフックする方法 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType: (UIWebViewNavigationType)navigationType { Log(@"[%d]request=%@",navigationType,request); if( navigationType == 0 ) [self startAnimation]; return YES; }
  • 18. アニメーションの終了後に実行 [CATransaction setCompletionBlock:^{ if( self._delayedRequest ){ self._owlView.hidden = YES; [self.webView loadRequest:self._delayedRequest]; } }];
  • 21. 対策 • 手動でがんばる • オーサリングツールを作る • 既存のオーサリングツールが出力する形 式をインポートする • 既存のアニメーション形式 • Flash • sprite studio
  • 22. Flash • もともと Core Animation は Flash を参考にし た節がある。 • 相当する描画プリミティブも用意されて いる • SWF ファイルをパースするライブラリを 用いて、内部データをキーフレームにご とに切り出せば理論上は可能
  • 23. 第 3 の選択: 1. がっつり作って没入型インタフェー スを持つアプリ /UI を作る (OpenGLES, Unity,Cocos2D) 2. HTML5+canvas / CSS3 3. 場合によっては Core Animation
  • 24. まとめ • 自動で補間してくれるためコード上の記 述が簡単 • iOS の UI とシームレス • 結構強力なアニメーションができる • GPU 連携(たぶん)しているので軽量 • あらかじめ動きを決めてから、アニメー ション刺せるというモデルのため、アク ションゲームのキャラクタ表示などには 不向き( Web でいうと CSS3 に近いイメー ジ)
  • 26. 参考文献 • CA360(Core Animation の Demo) • https://github.com/neror/CA360 • steps to phantasien • WebKit CSS と core animation の関係 • http://stepped.dodgson.org/?date=20090822 • @nakiwo 氏のスライド • 「 Core Animation part1 」 • http://www.slideshare.net/yuichi_fujishige/core-animation-part1 • 「 CAKeyframeAnimation 」 • http://www.slideshare.net/yuichi_fujishige/cakeyframeanimation

Notas del editor

  1. ponpokoCA デモ
  2. SweetHome のスイッピーのアニメーション
  3. WebView の遷移