作者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
1F:推 ForSinSoKing:用a搜寻piaip的文章、或者/搜寻pmore就有了喔^^ 10/06 11:56
2F:推 pain0:可以借我转吗 10/06 23:49
3F:→ qmi:是说 欢迎大家转录 10/07 16:31
4F:推 willy7954:借转>"<..转到自己的板上比较方便查询~感谢 10/08 09:19
5F:推 pain0:乾虾 10/08 19:16