作者qmi (QQ鬼)
看板BBSmovie
標題Re: [問題] 互動的指令
時間Tue Oct 6 09:40:15 2009
※ 引述《DahilSaIyo (點點滴滴 只因為你)》之銘言:
: 抱歉各為...小的笨拙小的蠢...
: 就算爬了精華區也看懂了一些看不懂一大堆
: 首先...
: 我已經按照精華區說明打了
: ^L#@d,G:next:#P (按方向鍵向下就跳到命名叫'next'的那一頁)
: 失敗!!!
: 請問我做錯了什麼...
: 還有一個問題...
: 空格鍵和Enter的指令是什麼阿?
: 我找不到...
以下擷取自精華區z->3->1->15
小的這陣子在學習中
希望也對你有幫助
-----------------------------------------------------------------------------
pmore 的控制碼是寫成 ^L
注意這是分別打入「^」 (Shift-6) 與大寫「L」兩個符號的結果
-----------------------------------------------------------------------------
1.1 畫面開始
^L (播放 1.0 秒)
^L0.5 (播放 0.5 秒)
^L (與上張同 - 播放 0.5 秒)
^L10 (播放 10 秒)
^L0 (少於最短播放時間的一律會變為 0.1 秒)
-----------------------------------------------------------------------------
1.2 基本播放控制: 暫停 (2007 新增)
^LP 暫停播放 會讓該頁提示使用者按下任意鍵後再繼續。
範例:
^LP
-----------------------------------------------------------------------------
1.3 基本播放控制: 停止
^LE 會直接在該頁停下來。
範例:
^LE
-----------------------------------------------------------------------------
1.5 隱藏控制碼 (2007 新增)
*[30;40m^L 隱藏控制碼
範例:
==*[30;40m^L2.5
==*[30;40m^LP*[m
-----------------------------------------------------------------------------
1.6 與傳統動畫相容 (2007 新增)
^LO=
^LO= 就是解決這個問題的。 (是英文的大寫 O 而非數字 0)
加了這行後等於幫使用者按了小寫 p (播放動畫),而且可指定時間。
適用於不想全篇改寫的舊動畫。
==*[30;40m^LO=0.5*[m
=============================================================================
2. 互動式動畫
要談互動式的動畫製作前,有些觀念要先理解。
一個互動式的動畫不外乎兩大重點:
1. 取得使用者的輸入
2. 根據輸入作出不同反應。
在 pmore 要換畫面,先要知道每一張畫面是怎麼編號的,還有怎麼指定
跳頁的目標。
前面提過, pmore 動畫的每一張畫面都是從 ^L 開始的;
^L
畫面一
^L
畫面二
^L
畫面三
TypeOffset
Type 可以想成「單位」,Offset 可以想成「編號」。
Type (單位) 可直接指定畫面(frame),或是頁數(page)、行數(line)
、別名 (named,詳見 3.4 畫面命名)。
每種單位的編號都是從 1 開始計算。
Type 的語法就是各單位的英文縮寫: f, p, l。 (named 格式 為 :xxx:)
有點複雜嗎? 直接來看例子吧:
f1 => frame 1 (第 1 張畫面)
p+2 => page +2 (往後 2 頁)
:named: => named (尋找叫作 named 的畫面, 詳見 3.4)
-----------------------------------------------------------------------------
2.2 跳頁
^LGcmd 跳頁
最自然的練習,就是由直接跳頁開始了。
跳頁(畫面)的指令叫 ^LG, 後面接個 cmd (參見 2.1 動畫編號方式)
常見的應用是無限重播的區段。
注意有跳頁指令時該頁本身不會顯示出來。
範例:
^LGf1 (跳到第一張畫面)
^LGf+3 (往後3頁
-----------------------------------------------------------------------------
2.3 互動選項
^L#key,cmd,text# 互動選項
初看有點複雜,其實只要掌握兩個原則就好了:
1. 每一個選項用 # 包起來,也就是 ^L#選項1#選項2#選項3#
2. 每個選項內的設定用逗號 (,) 分開,也就是 #設定1,設定2,設定3#
那麼,再來細看語法吧:
^L#key,cmd,text#
key: 使用者可按下的快捷鍵 (只能單鍵,如 1 2 3 a b A B ...)
cmd: 被選取後要執行的動作 (就是跳頁,見 2.1 動畫編號方式)
text: 顯示在螢幕上的說明 (可省略)
範例:
^L#a,f1,首頁#
按下 a 時會跳到第一張畫面
key 省略時,系統會由前一個 key 來產生下個 key。
^L#a,f1,這是a#,f2,這是b#1,f1,這是1#,f2,這是2#
這例子中,省略的兩個分別會變成 b 跟 2。
text 省略時,系統不會出現選項列。請記得在你的動畫中提示
使用者現在該作什麼事。
^L#a,f1#,f2#,f3#,f4#
按 a 跳第一張, b 跳 2, c 跳 3, d 跳 4
而且沒有選項列
註: 選項列會不會出現實際上是看「第一個選項的 text」有沒有被省略。
也就是說,
註: ^L## 結尾要有對應的 # 包起來才行!
常見錯誤:
^L#a,f1,選項一#b,f2,選項二 <- 選項二無作用
註: ^L# 在執行時會依順序判斷按鍵是否符合條件。也就是說,
若有熱鍵重複出現則是前面的會被執行。 適當排列並與特殊按鍵 (見 3.1)
如 @a 合用則可作出「按 XX 鍵執行 YY,其它所有鍵都執行 ZZ」的效果。
=============================================================================
3. 即時互動與進階
下面講的是更高級的特殊指令及應用,
主要是讓互動更進一步變為即時性的互動,
例如「在某時使用者按下某鍵才會有反應」的效果。
-----------------------------------------------------------------------------
NAMED KEY 特殊按鍵
有些鍵無法用標準的語法表示出來,所以 pmore 提供了一些特殊的名字。
此類按鍵表示法一律以 @ 開頭,後面接單一個字元,大小寫有別。
@u up 方向鍵(↑)
@d DOWN 方向鍵(↓)
@l LEFT 方向鍵(←)
@r RIGHT 方向鍵(→)
@b BS 倒退鍵
@H HOME Home
@E END End
@P PGUP PageUp
@N PGDN PageDown
@I INS Ins
@D DEL Del
另外還有一個特別的叫
@a ALL/ANY 任意鍵
範例
^L#@u,f1# 按↑時跳到第1張畫面
^L#@d,f2#@a,f-3# 按↓時跳到第2張畫面,
其它任何鍵都往前跳3張畫面
選取鍵 (空白鍵與 ENTER) 的功能也無法改變,但有別的技巧
可以「使用」這兩個鍵。
對於每個 ^L# 指令來說,預設的選項就是第一個選項。
按下空白或 ENTER 就是「選擇目前選項」。
所以,只要在編輯指令時把 ENTER/空白 想讓它們做的事放在第一個選項即可
-----------------------------------------------------------------------------
^LK##
PRESERVE KEY 保留互動按鍵
當你開始製作即時性動畫時常會遇到一個問題 -
使用者在沒有互動的頁按了鍵使得動畫中斷。
所以有個特別的指令叫 ^LK, 保留按鍵 (也就是說,使用者按下這些鍵時
什麼事都別作。)
^LK 目前只支援保留按鍵給互動式選項 (^L#) 使用,所以語法就是
^LK#keys# keys 為你要保留的鍵。
範例:
^LK#abc123# 保留 a b c 1 2 3 為互動所需要的鍵
^L2.5 (此時使用者按 abc 123 都不會停下來)
^L#a,f1#
...
的動畫開頭最常寫的就是:
^LK#@a#
這樣除非使用者按下系統中斷鍵 (q,Q,Ctrl-C) ,不然什麼鍵都不會打斷你的
播放。
另外,由於 ^LK 只是設定系統而非動畫控制指令,所以你可以在它後面
再接上標準的控制語法。
範例: 下面兩個為常見開場法
^LK#@a#2.5
停留2.5秒的首頁,設定本動畫不被任何鍵中斷
^LK#@a#P
互動方法說明的首頁,設定本動畫不被任何鍵中斷
設定一次 ^LK 後會一直有效,直到下次再指定。
^LK## 等於放棄所有指定的保留效果。
-----------------------------------------------------------------------------
3.4 畫面命名
^L:name:
NAMED FRAME 畫面別名
互動式動畫有個特色 - 很快你就會發現畫面數量成長的速度大幅增加,
要管理各畫面的關係是個大問題。
相對編號 (f-2, f+10) 小動畫勉強可用,但是當你有一連串互動指令
都要跑到相同的結尾時,只要中間增減一張畫面就要到處改編號 -
非常的麻煩。
最簡單的方法,就是為畫面命名。
語法為用 :: 包起來的字串,只可使用英文字母及數字 (大小寫有別)。
範例:
^L:end: 本畫面的名字為 end
另外,由於 ^L:name: 只是設定名稱而非動畫控制指令,所以可以在它後面
再接上標準的控制語法。
^L:home:P
設定此頁名為 home, 並在顯示內容後暫停。
若想跟其它非控制命令如 K## 合用,則 :name: 要在最前面
^L:home:K#@a#P
設定此頁名為 home 、保留全部按鍵供互動使用、
並在顯示內容後暫停。
要使用有名字的 frame, 只要一樣用 :name: 來指定就好了。 :name:
格式屬於正常 cmd (見 2.1 動畫編號方式) 之一,所以可以
在 ^LG 跟 ^L# 中使用。
^LG:end:
跳至叫 end 的畫面
按下 1 時跳至叫 opt1 的畫面
按下 2 時跳至叫 opt2 的畫面
按下 3 時跳至叫 opt3 的畫面
使用命名方式,則不管你中間增減多少頁,系統都能正確的跳頁。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.225.135.54
推 ForSinSoKing:用a搜尋piaip的文章、或者/搜尋pmore就有了喔^^ 10/06 11:56
推 pain0:可以借我轉嗎 10/06 23:49
→ qmi:精華區是說 歡迎大家轉錄 10/07 16:31
推 willy7954:借轉>"<..轉到自己的板上比較方便查詢~感謝 10/08 09:19
推 pain0:乾蝦 10/08 19:16