1. 程式人生 > >核心動畫(三)-關鍵幀動畫

核心動畫(三)-關鍵幀動畫

一、簡單介紹

CAKeyframeAnimation是CApropertyAnimation的子類,跟CABasicAnimation的區別是:CABasicAnimation只能從一個數值(fromValue)變到另一個數值(toValue),而CAKeyframeAnimation會使用一個NSArray儲存這些數值

屬性解析:

values:就是上述的NSArray物件。裡面的元素稱為”關鍵幀”(keyframe)。動畫物件會在指定的時間(duration)內,依次顯示values陣列中的每一個關鍵幀

path:可以設定一個CGPathRef\CGMutablePathRef,讓層跟著路徑移動。path只對CALayer的anchorPoint和position起作用。如果你設定了path,那麼values將被忽略

keyTimes:可以為對應的關鍵幀指定對應的時間點,其取值範圍為0到1.0,keyTimes中的每一個時間值都對應values中的每一幀.當keyTimes沒有設定的時候,各個關鍵幀的時間是平分的

說明:CABasicAnimation可看做是最多隻有2個關鍵幀的CAKeyframeAnimation

程式碼
第一種方式:設定values值,依次顯示values陣列中的每一個關鍵幀形成動畫。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //1.建立核心動畫
    CAKeyframeAnimation *keyAnima=[CAKeyframeAnimation animation];
    //平移
keyAnima.keyPath[email protected]"position"; //1.1告訴系統要執行什麼動畫 NSValue *value1=[NSValue valueWithCGPoint:CGPointMake(100, 100)]; NSValue *value2=[NSValue valueWithCGPoint:CGPointMake(200, 100)]; NSValue *value3=[NSValue valueWithCGPoint:CGPointMake(200, 200)]; NSValue *value4=[NSValue valueWithCGPoint:CGPointMake(100
, 200)]; NSValue *value5=[NSValue valueWithCGPoint:CGPointMake(100, 100)]; keyAnima.values[email protected][value1,value2,value3,value4,value5]; //1.2設定動畫執行完畢後,不刪除動畫 keyAnima.removedOnCompletion=NO; //1.3設定儲存動畫的最新狀態 keyAnima.fillMode=kCAFillModeForwards; //1.4設定動畫執行的時間 keyAnima.duration=4.0; //1.5設定動畫的節奏 keyAnima.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; //設定代理,開始—結束 keyAnima.delegate=self; //2.新增核心動畫 [self.customView.layer addAnimation:keyAnima forKey:nil]; }

第二種方式(使用path)讓layer在指定的路徑上移動(畫圓):

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //1.建立核心動畫
    CAKeyframeAnimation *keyAnima=[CAKeyframeAnimation animation];
    //平移
    keyAnima.keyPath[email protected]"position";
    //1.1告訴系統要執行什麼動畫
    //建立一條路徑
    CGMutablePathRef path=CGPathCreateMutable();
    //設定一個圓的路徑
    CGPathAddEllipseInRect(path, NULL, CGRectMake(150, 100, 100, 100));
    keyAnima.path=path;

    //有create就一定要有release
    CGPathRelease(path);
    //1.2設定動畫執行完畢後,不刪除動畫
    keyAnima.removedOnCompletion=NO;
    //1.3設定儲存動畫的最新狀態
    keyAnima.fillMode=kCAFillModeForwards;
    //1.4設定動畫執行的時間
    keyAnima.duration=5.0;
    //1.5設定動畫的節奏
    keyAnima.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    //2.新增核心動畫
    [self.customView.layer addAnimation:keyAnima forKey:@"wendingding"];
}

//停止self.customView.layer上名稱標示為wendingding的動畫
[self.customView.layer removeAnimationForKey:@”wendingding”];

相關推薦

核心動畫-關鍵動畫

一、簡單介紹 CAKeyframeAnimation是CApropertyAnimation的子類,跟CABasicAnimation的區別是:CABasicAnimation只能從一個數值(fromValue)變到另一個數值(toValue),而CAKeyf

Android Studio之Activity切換動畫

文章 oid out size ref intel tar studio anim 1、上一篇文章“Android Studio之多個Activity的滑動切換(二)”中實現了多個activity之間的滑動切換,可是新切換出的activity大多是從右側進入 2、我們能

Android動畫-動畫框架

概述 上兩篇介紹了一些動畫基礎 Android動畫(一)-檢視動畫 Android動畫(二)-屬性動畫 但是開發中為了開發效率,我們通常是使用一些三方的庫,有前輩已經封裝了很完善的動畫庫,我們學習一下直接用,使用中還能探尋框架作者的設計思路,事半功倍,何樂不為~ 1 常

【Android 動畫動畫詳解之屬性動畫

大家好,在前兩篇中,我們介紹了Android的補間動畫和插值器,這一篇,我們來說下屬性動畫。 【Android 動畫】動畫詳解之補間動畫(一) 【Android 動畫】動畫詳解之插值器(二) 前言 通過前兩篇,我們已經熟悉了對View進行移動、縮放、旋轉和

Javascript動畫:N個小球的躁動

目錄 面向物件程式設計 新增多個小球 按鈕控制多次新增小球 幾千上萬小球的躁動 Object.assign 的polyfill 上一小節我們實現了一個小球運動,太孤單了

Android屬性動畫 TimeInterpolator插值器

OK,繼續學習屬性動畫,本篇文章是屬性動畫系列的第三篇文章了,今天來學習一下屬性動畫中的TimeInterpolator,如果你對屬性動畫還不太熟悉,可以點選下面的連結學習一下前兩篇文章的知識: 1.介紹 先說說Interpolator,在And

Android動畫解析-----逐動畫和補間動畫

今天專案又用到了動畫,發現之前掌握的那些又遺忘了不少,趁著有時間,再重新捋順一邊。 Android中的動畫分為 逐幀動畫,補間動畫,屬性動畫 三種. 逐幀動畫(Frame Animation) 逐幀動畫:就像GIF圖片一樣,通過一系列的Drawab

Android開發25--framebyframe動畫並實現啟動介面到主介面的跳轉

      Drawable animation可以載入Drawable資源實現幀動畫。AnimationDrawable是實現Drawable animations的基本類。推薦用XML檔案的方法實現Drawable動畫,不推薦在程式碼中實現。這種XML檔案存放在工程中r

cocos2d-x動作、特效和動畫扭曲動作

    CCActionInterval *actionTo = CCSkewTo::create(2, 70.0f, 0.0f);       CCActionInterval *actionToBack = CCSkewTo::create(2, 0, 0);  

通過原始碼,手把手帶你學屬性動畫

主要內容:上篇側重介紹了ofFloat()方法,以及與動畫相關的方法、監聽,本節將繼續介紹剩下的 ofObject() 和 ofPropertyValuesHolder() 方法,以及相關的 TypeEvaluator 和 PropertyValue

CPF 入門教程 - 樣式和動畫

CPF NetCore跨平臺UI框架   系列教程 CPF 入門教程(一) CPF 入門教程 - 資料繫結和命令繫結(二) CPF 入門教程 - 樣式和動畫(三)   用樣式可以對內部元素進行批量設定屬性。 CPF裡採用CSS作為樣式描述。為什麼用css描述樣式?因為css結構簡單明瞭。

Unity用程式給Animator控制的某一個動畫AnimationClip加一個動畫事件AnimationEvent

Unity 專案,需要對一個玩家拔武器的動作中,實現武器掛點的切換(從背部 掛到手上)。 1. 一種方案,動畫美術直接編輯動畫,定位到要變化掛點的幀(比如24幀),在Events裡新增一個動畫事件, 名字規範成 TakeWeapon 這個方案 優:讓美術準確控制幀數, 可以個性化

谷歌三大核心技術Google BigTable中文版

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Docker核心技術

Docker核心技術 Docker容器資料卷 Docker容器資料卷是什麼? Docker容器資料卷能幹嘛? Docker容器資料卷的實操 直接命令新增 DockerFile新增 資料卷容器

Hyperledger Fabric 1.3 官方文件翻譯關鍵概念 (Key Concepts)

身份(Identity) 什麼是身份(What is an Identity)? The different actors in a blockchain network include peers, orderers, client applications,

Pr_cc 學習筆記關鍵 特效

(一) 接上回的畫中畫,在錄機中選擇元首素材開啟效果控制元件 點選---位置前的切換動畫。如圖 就 可以Key關鍵幀了。 在兩個時間點Key幀,在最後一次Key的關鍵幀內移動位置,即改變位置引數。便可使視訊產生移動效果 如圖  可以多Key幾個幀,進行多

Exynos4412 核心移植—— 核心啟動過程分析

核心啟動所用函式如下:         與移植U-Boot 的過程相似,在移植Linux 之前,先了解它的啟動過程。Linux 的過程可以分為兩部分:架構/開發板相關的引導過程、後續的通用啟動過程。對於uImage、zImage ,它們首先進行自解壓得到vmlinux

淺析Android動畫,屬性動畫高階例項探究

轉載請註明出處!http://www.cnblogs.com/wondertwo/p/5312482.html ObjectAnimator實現屬性動畫 為了寫好Android動畫這幾篇部落格,在動筆之前我是下過很大決心的,我對自己的要求是儘量把一個小知識點寫清楚寫明白,說白了就是相對於大而全的長篇大論,我

Core Graphics核心繪圖 --貝塞爾曲線

1)UIBezierPath(貝塞爾曲線) 在自定義View的時候,可以使用貝塞爾曲線(UIBezierPath)類來實現直線和曲線的繪製和渲染,起初是使用貝塞爾曲線是定義路徑的幾何形狀。貝塞爾曲線可以定義矩形、橢圓和圓形等簡單形狀或者是融合直線和曲線的

谷歌三大核心技術Google_BigTable中文版

谷歌三大核心技術(三)Google_BigTable中文版 Bigtable:一個分散式的結構化資料儲存系統 譯者:alex 摘要 Bigtable是一個分散式的結構化資料儲存系統,它被設計用來處理海量資料:通常是分佈在數千臺普通伺服器上的PB