核心動畫(三)-關鍵幀動畫
一、簡單介紹
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