文章目錄
- 一、影片概念
- 二、逐幀影片
- 三、運行效果
- 四、涉及知識點
- 五、游戲特效案例實作思路
- 六、實作步驟
- 1、創建安卓應用【GameSpecialEffect】
- 2、將逐幀影片素材拷貝到drawable目錄里
- 3、主布局資源檔案acitivity_main.xml
- 4、字串資源檔案strings.xml
- 5、主界面類MainActivity
- (1)宣告變數
- (2)通過資源標識獲得控制元件實體
- (3)初始化影像標識陣列
- (4)創建訊息處理器
- (5)創建開始按鈕單擊事件處理方法
- (6)創建停止按鈕單擊事件處理方法
- 6、啟動應用,查看效果
一、影片概念
- 影片的概念不同于一般意義上的影片片,影片是一種綜合藝術,它是集合了繪畫、漫畫、電影、數字媒體、攝影、音樂、文學等眾多藝術門類于一身的藝術表現形式,最早發源于19世紀上半葉的英國,興盛于美國,中國影片起源于20世紀20年代,1892年10月28日埃米爾·雷諾首次在巴黎著名的葛萊凡蠟像館向觀眾放映光學影戲,標志著影片的正式誕生,同時埃米爾·雷諾也被譽為“影片之父”,
- 影片的英文有很多表述,如animation、cartoon、animated cartoon、cameracature,其中較正式的 “Animation” 一詞源自于拉丁文字根anima,意思為“靈魂”,動詞animate是“賦予生命”的意思,引申為使某物活起來的意思,所以影片可以定義為使用繪畫的手法,創造生命運動的藝術,
二、逐幀影片
- 逐幀影片(Frame-by-Frame Animation)是一種常見的影片形式,其原理是在“連續關鍵幀”中分解影片動作,也就是在時間軸的每幀上逐幀繪制不同的內容,使其連續播放而成影片, 因為逐幀影片的幀序列內容不一樣,不但給制作增加了負擔,而且最終輸出的檔案量也很大,但它的優勢也很明顯,逐幀影片具有非常大的靈活性,幾乎可以表現任何想表現的內容,而它類似與電影的播放模式,很適合于表演細膩的影片,例如人物或動物急劇轉身、 頭發及衣服的飄動、走路、說話以及精致的3D效果等等,
- 逐幀影片有多種實作方式:利用影片資源檔案實作、利用Thread和Handler來實作、利用Timer和Handler來實作,上一個安卓案例【動態顯示時間】,利用執行緒(Thread)和訊息處理器(Handler)實作幀影片,本次案例,我們學習如何利用定時器(Timer)和訊息處理器(Handler)實作幀影片,
三、運行效果

四、涉及知識點
- 線性布局(LinearLayout)
- 影像視圖(ImageView)
- 按鈕(Button)
- 定時器(Timer)
- 定時器任務(TimerTask)
- 訊息處理器(Handler)
五、游戲特效案例實作思路
- 逐幀影片,其實就要定時切換圖片,定時操作可以利用定時器(Timer)來完成,切換圖片就需要事先將所有圖片的資源標識保存到一個陣列里(這也是一個難點,尤其當圖片數量比較大時),通過改變圖片資源標識陣列的當前索引達到切換圖片的目的,但是,從安卓4.0版本以后,出于安全考慮,子執行緒不能直接更新主界面元素,怎么辦呢?這就需要一種能溝通主執行緒和子執行緒的機制,而訊息處理器Handler正是這樣一種機制,實作不同執行緒間的通信,在子執行緒里,定時更新圖片當前索引,然后通過handler的sendEmptyMessage方法將更新后的圖片當前索引發送到主執行緒,最后,在主執行緒里,通過handler的handleMessage方法獲取子執行緒發送過來的圖片當前索引,利用這個索引獲取當前圖片的資源標識,作為引數傳給影像控制元件的setImageRource方法,就達到更新圖片的目的,
六、實作步驟
1、創建安卓應用【GameSpecialEffect】


2、將逐幀影片素材拷貝到drawable目錄里

圖片素材下載鏈接:https://pan.baidu.com/s/1FvyJ2_dB7F4inGftnIZ5mQ 提取碼:ti7v

3、主布局資源檔案acitivity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:gravity="center"
android:orientation="vertical"
tools:context="net.hw.game_special_effect.MainActivity">
<ImageView
android:id="@+id/ivBomb"
android:layout_width="250dp"
android:layout_height="250dp"
android:src="@drawable/img1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/btnStart"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginRight="30dp"
android:background="#cccccc"
android:onClick="doStart"
android:text="@string/start"
android:textSize="25sp" />
<Button
android:id="@+id/btnStop"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:background="#cccccc"
android:onClick="doStop"
android:text="@string/stop"
android:textSize="25sp" />
</LinearLayout>
</LinearLayout>
4、字串資源檔案strings.xml

<resources>
<string name="app_name">幀影片:游戲特效</string>
<string name="start">開始</string>
<string name="stop">停止</string>
</resources>
5、主界面類MainActivity

(1)宣告變數

(2)通過資源標識獲得控制元件實體

(3)初始化影像標識陣列

(4)創建訊息處理器
- 創建訊息處理器,處理從定時器任務里發送過來的訊息,更新主界面元素

(5)創建開始按鈕單擊事件處理方法

(6)創建停止按鈕單擊事件處理方法

6、啟動應用,查看效果

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/147146.html
標籤:python
上一篇:Activity啟動模式的選擇
