在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 意見:
張貼意見