11- Flag(旗帜、标志,俗称开关)与Flag判定
Internal Flag(内部标志)为一种特殊的alterable value。他类似于Flash语言中的Boolean类,只有真假两个量。F2中的INTERNAL FLAG着附与物体上,并且只有on和off两种值,可以视作只有1和0的Alterable Value。
Flag的运用很广泛。比如当一些判定条件比较复杂,且有一组动作有时执行有时不执行时,就可以用Flag来控制是否执行。Flag的编号为从0开始的正整数。每个物体都有自己特有的FLAG,FLAG初始值为off。初始值也可以在Start of Frame中进行初始化设定。
下面是Flag语句:
(条件) 物体:is internal flag 旗帜编码 on?(或者off?)
执行动作
(动作)判定条件
物体:set internal flag 编码 on(或者off)(或者Toggle internal flag 编码)
TOGGLE FLAG是反转旗帜。一开始如果是on则off,off则on。(条件中没有Toggle语句)
我们通过一个例子来体会flag
【例1】在新的MFA里让小球做四边形轨迹的运动。必须用到flag
【分析】我们首先画一个四边形的BACKDROP(背景),然后插入四个active,设置为初始不可见,并将形状画为矩形。将四个矩形分别如下图放置法:


图3-13 红色为Active,蓝色为小球运动轨迹。此例为逆时针。
然后删去那个背景长方形,只剩4个ACTIVE以及一个小球。
通过控制四段代码的flag开关来执行代码。
(另外:flag的条件创建方法——点击物品——右键——Alterable Value选项——里面有个flag选项)
【答案】
1(条件)·小球:internal flag 1 is on
(动作)小球:set X position to X("BALL")+3
2(条件)小球:internal flag 2 is on
(动作)小球:set Y position to Y("BALL")+3
3(条件)·小球:internal flag 3 is on
(动作)小球:set X position to X("BALL")-3
4(条件)小球:internal flag 4 is on
(动作)小球:set Y position to Y("BALL")-3
5(条件)Collision between BALL and Active 1
(动作)小球:set internal flag 1 on
小球:set internal flag 2 off
小球:set internal flag 3 off
小球:set internal flag 4 off
6(条件)Collision between BALL and Active 2
(动作)小球:set internal flag 2 on
小球:set internal flag 1 off
小球:set internal flag 3 off
小球:set internal flag 4 off
后面的以此类推,将FLAG3和FLAG4控制好。
【后话】 其实,本题可以直接通过运动状态的改变、运动方向的改变来实现。那样会更加简洁!下一节我们就来研究这种方法。(晚上再发)