CXMB教學(8):XML之動畫制御 - 改機

Franklin avatar
By Franklin
at 2011-07-27T22:38

Table of Contents


前言:

許多人等的應該是這一篇

不過前面的概念沒有學好的話,動畫製作會非常辛苦

尤其是座標體系的部分,如果有不熟的地方請翻回去複習

此外需注意,此篇的Delay值部分非常重要



所需軟體:

1.RCOMage

2.PSPad



動畫事件:

控制動畫的事件大致分為三種:

1.動態事件:宣告動畫的動作事件,可同時進行
每個事件有屬於自己的事件長度(duration)

2.結束事件:宣告結尾之後自動執行的動畫,結尾時宣告一次
可省略,決定是否自動進行下一個步驟
結束事件一宣告即為結尾,以下的事件一率略過

3.Delay事件:宣告動畫時間差的事件,有屬於自己的事件長度(time)
當time不為0時以Delay事件長度(time)為優先
當time為0時以動態事件長度(dutation)為優先

有關時間數值的部分,個人使用上感覺120約為一般60fps(1/60s)的長度


動畫流程:

每個動畫的流程可以想成是一條影片時間軸

時間軸上不同位置有不同的事件,時間點經過就會發生

一個<Animation>標籤代表的是一個動畫

<Animation>標籤內的敘述則是該動畫會發生的所有事件順序

1.基本型態:

│動態事件1(duration=2000) │動態事件2(duration=2000) │
│ │ │
│←- Delay(time=1000) -→│←- Delay(time=3000) -→│

<Animation>
動態事件1
Delay(time=1000)
動態事件2
Delay(time=3000)
</Animation>

動態事件與Delay值輪流宣告

動畫順序為「動態事件1→動態事件2→停止」

當Delay的time值大於等於前述事件的duration值時,動畫會播放並緩衝

反之當Delay的time值小於(不等於0)duraton值時,動畫會中斷並跳過

以此範例為例:

動態事件1經過1000時間之後會被中斷,接著執行動態事件2

動態事件2經過2000時間之後完成,並多出了1000時間的緩衝

2.同時型態:

│動態事件1(duration=2000) │
│動態事件2(duration=3000) │
│←- Delay(time=0) -→│

<Animation>
動態事件1
動態事件2
Delay(time=0)
</Animation>

同時宣告複數個動態事件後宣告Delay值

動畫順序為「動態事件1&2→停止」

當Delay的time值等於0時,以前述動態事件的duration最大值為參考

以此範例為例

動態事件1和動態事件2同時發生

動態事件1以2000時間完成,動態時間2以3000時間完成

動態事件2結束之後馬上停止,沒有緩衝時間

3.迴圈型態:

│動態事件1(duration=2000) │ │
│動態事件2(duration=3000) │結束事件│
│←- Delay(time=4000) -→│ │

<Animation>
動態事件1
動態事件2
Delay(time=4000)
結束事件
(動態事件3)
</Animation>

宣告事件與Delay值之後加入結束事件

動畫順序為「動態事件1&2→經過1000時間→動態事件1&2→...」

結束事件之後宣告的事件一率略過不執行

以此範例為例

動態事件1和動態事件2同時發生

動態事件1以2000時間完成,動態時間2以3000時間完成

動態事件2結束之後,經過1000時間緩衝,重複動態事件1和動態事件2



動態事件:

影響動畫最主要的就是動態事件,種類大致分為以下幾種:

1.MoveTo:移動物件的方法
x,y屬性設定移動的絕對位置(相對於母物件)

2.Rotate:旋轉物件的方法
x,y,z屬性設定不同軸向旋轉的角度
採用徑度,2π(約6.283185307)為一圈
其中正向角度的定義
x軸為右方視點逆時針,y軸為上方視點逆時針,z軸為前方視點逆時針

3.Recolour:變色物件的方法
red,blue,green屬性設定RGB彩度,alpha屬性定義透明度

4.Resize:縮放物件的方法
width,height屬性設定物件寬度"比例"與高度"比例"



結束事件:

結束事件需填上目標動畫名稱,於結尾時執行該動畫一次

<FireEvent object="anim:動畫名稱" />

此行之後宣告的任何事件將一律略過,不會因為執行完目標動畫回來接著完成

可以省略,動畫結束後將直接停止,沒有任何動作

結束事件的用法大致分為以下兩種:

1.迴圈動畫:

<Animation name="anime_01">
動態事件1
動態事件2
Delay(time=4000)
<FireEvent object="anim:anime_01" />
</Animation>

此時anime_01的內容將持續下去

2.先置動畫:

<Animation name="anime_01">
動態事件1
動態事件2
Delay(time=4000)
<FireEvent object="anim:anime_02" />
</Animation>
<Animation name="anime_02">
動態事件3
Delay(time=1000)
<FireEvent object="anim:anime_02" />
</Animation>

此時anime_01執行完畢後,自動進入anime_02的迴圈


Delay事件:

Delay事件的內容非常簡單,就只有宣告time值而已

值得注意的是Delay事件與結束事件的關係

由於結束事件的優先度與動態事件相同

因此當有宣告結束事件時,結束事件前的Delay值不可省略

「否 則 將 進 入 無 窮 迴 圈」
就永久機的定義,這幾乎是造成磚化的主因
(尤其是當問題出現在進入CXMB並可連接USB前)

以下舉個例子分析:

<Animation name="anime_01">
動態事件1
動態事件2
</Animation>

以上面的寫法來說,同時執行完動態事件1跟動態事件2,動畫就停止了

因此結尾的Delay值可省略,動畫長度為兩個事件中較大的duration值

<Animation name="anime_01">
動態事件1
動態事件2
Delay(time=4000)
<FireEvent object="anim:anime_01" />
</Animation>

加入了Delay值與結束事件之後

同時執行動態事件1與動態事件2,並視Delay值決定進入結束事件的時間

並且重複執行anime_01

<Animation name="anime_01">
動態事件1
動態事件2
<FireEvent object="anim:anime_01" />
</Animation>

在有宣告結束事件時把Delay值拿掉,此時會發生一個問題

動態事件1,動態事件2,結束事件,這三者是同時執行的

換句話說不會經過動態事件1或2的duration之後才進入迴圈

而是動畫一開始就馬上重複,這將造成動畫極度的忙碌,造成系統死機(Freeze)

1.如果這問題出現在某個主選單以外的功能表,也許可以強制關機

重開之後進入USB傳輸將CTF修正,並Reset VSH解決

2.如果這問題出現在開機動畫,或是進入CXMB的淡出之前

2-1.非永久機的使用者,強制關機重開之後,進入OFW的USB傳輸

使用CTFtool將修正後的CTF傳輸取代,並重新進入CFW

重開之後由於自動使用預設(且修正後)的CTF,如果修正得當就可以解決

2-2.永久機的使用者,強制關機重開之後

按住Home(639)或Select(620)或R鍵開機,進入OFW的USB傳輸

使用CTFtool將修正後的CTF傳輸取代,並重新進入CFW

重開之後由於自動使用預設(且修正後)的CTF,如果修正得當就可以解決

--
Tags: 改機

All Comments

Skylar Davis avatar
By Skylar Davis
at 2011-07-29T11:49
等等,那個夏日方案是怎樣wwww
Joe avatar
By Joe
at 2011-07-30T08:14
永久機639可按住home開機、620按select
Elma avatar
By Elma
at 2011-08-03T09:57
原來如此,關於CFW還是得問樓上
Linda avatar
By Linda
at 2011-08-05T22:25
這麼說來風險似乎又降低了(茶

目前版本是6.35Pro-B3 想請問幾個問題

Sierra Rose avatar
By Sierra Rose
at 2011-07-27T14:47
官方韌體版本是6.35 前陣子玩魔物連線 蠻多時候畫面如果特效太多 或是有些在一般場景而已 畫面會特別卡 如同慢動作般 看了XLINK的 PING值都不高 約40~70 可是有時候同樣狀況 卻又很順暢 想說記憶卡玩的關係 買了UMD發現韌體要提升才能玩 看到現在官方韌體全部都可以破解 在 ...

降級問題

Kumar avatar
By Kumar
at 2011-07-27T12:24
同學有一台3007 版本是6.36 今天去問遊戲店的老闆 可否永久改? 老闆說可以 只要降到6.20就好了 可是板上爬文 6.36都只有降到6.35 沒有降到6.20之類的文章 請問 6.36有辦法降到6.20嗎? PS 那台3007 大概是1~2年前買的 - ...

想把6.35Pro改成6.39

Frederica avatar
By Frederica
at 2011-07-26T17:00
看了說明文後 也將相關的檔案都下載好了 想就一點來發出疑問 就是官方原生6.39andgt;6.39Pro 這個程序中間 有需要像5.03那樣先刷HEN(蛋圖)嘛? 還是不需要 直接6.39 Pro Update上6.39Pro就好呢? - ...

CXMB教學(7):XML之Object修改

Elma avatar
By Elma
at 2011-07-26T09:56
前言: 這篇指的是RCO檔案中,物件新增的方法以及基本規則 動畫的部分是下一篇的範圍 所需軟體: 1.RCOMage 2.PSPad(可用記事本代替) XML編輯: 首先請使用RCOMage拆解希望的rco之後 接著使用PSPad編輯主要 ...

CXMB教學(6):XML之座標體系概念

Suhail Hany avatar
By Suhail Hany
at 2011-07-25T20:11
前言: 這篇指的是RCO檔案中,物件編輯時,座標軸體系的基本概念 由於寫得有點長所以額外獨立出來一篇 物件座標軸: 在物件的建立之前,得先搞清楚在PSP中座標軸的體系 PSP的座標有兩個特性,就是置中and相對 1.置中: PSP的解析 ...