2011-10-24

[筆記] 挑戰TJS 4.7

4.7節中,同樣也是遇上了plugin中特有的情形,在trans之後,前景層似乎不能繪製了?

*start
[call storage="DatePlugin.ks"]
[eval exp="date.drawDate(6, 30)"]
[backlay]
[trans layer=base time=1000 method=crossfade]
[wt]
[eval exp="date.drawDate(7, 1)"]

會發現即使執行了程式碼[eval exp="date.drawDate(7, 1)"],
新的日期依然沒有出現。

這是因為,在plugin中自訂的圖層,隨著trans就真的翻轉了,變成背景層在上,前景層反而在下的情形。

換句話說,上面的這段程式變成要寫成
*start
[call storage="DatePlugin.ks"]
[eval exp="date.drawDate(6, 30)"]
[backlay]
[trans layer=base time=1000 method=crossfade]
[wt]
[eval exp="date.drawDate(7, 1, false)"]

利用帶參數的方式,指定要繪製在背景層,那麼圖形才會出現。

恩……這其實是很吊詭的一件事情,而且相當的不方便,畢竟誰會清楚記得這次翻轉要畫在前景層還是背景層呢。

因此4.7中,就提到了onExchangeForeBack這個函式,透過這個函式,一旦有前景層跟後景層交換的情形,我們就再翻轉一次,讓前景層跑到上面。

也就是如下的程式碼:

function onExchangeForeBack() {
  foreLay <-> backLay;
}

這樣一來,即使呼叫了trans,你也不用特地在下次的繪製時指定要繪製在背景層了,省卻了很多功夫:)

0 意見: