bryce
 

AUTHORWARE的扩展与开发

    ----之鼠标跟随

上海    G&L多媒体工作室

 

[前言]  AUTHORWARE是专业的多媒体制作利器,但是,它也有许多先天的不足,其中之一就是原创性太少,大多数的素材需要借助其它软件的前期处理。有点厌倦了频繁地调用,就想折腾点名堂出来。想到它山之石可以攻玉的古训,所以,参考其它编程语言,开始了一系列移花接木(包括屏保、进度条、鼠标跟随等)。

 

[思路来源]  FLASH中有一种效果--鼠标跟随。.当鼠标移动时,在其后面会留下一串的轨迹,或者是晶莹的宝石,或者是璀璨的星星,等等。比较简单的一种要算是文字跟随了。下面将在AUTHORWARE中开发这种效果。LET'S GO!

 

[实现步骤]

    使用"coursorx"和"coursory"变量,动态决定了跟随文字与鼠标间相对固定的位置,也就实现了鼠标跟随。可真的这么简单吗?

    本教程按照笔者的制作步骤来描述,.所以开始步骤会与最终程序有所不同,不过,有关步骤中有调试修改的详细解说。

<一>  基本功能得实现

  1、 加入计算图标int,程序如下:

--------取得鼠标位置并赋予变量

xPos:=CursorX

yPos:=CursorY

  2、 加入交互图标控制,下挂一个组图标,设为永久条件交互;

    (1)条件交互为:

xPos<>CursorX | yPos<>CursorY

    从该表达式可知,这个交互在移动鼠标时相应。.那么很显然,这个组图标中就应当放置所要跟随得文字了。

    (2)打开这个组图标,在其中加入一个显示图标,输入文字G

    (3)加入一个等待图标,设置等待时间为变量wait time,其初始值为0.05,取消其它设置;

    (4)重复步骤2、3,加入所有文字和等待。本例为工作室名称G&LDMT

    现在运行程序,已经可以初步看到鼠标效果了。但是,一旦鼠标停止,跟随得文字就七零八落地散落在轨迹的不同点上(原因是交互失效),只用再次轻移鼠标才能使其回到正确位置。所以,拟增加一个让鼠标停止时也能调整位置的永久交互。

  3、在交互图标控制下方右侧再增加一个永久条件交互,图标为组图标;

    开始,很自然地想到用TRUE的恒真交互,但是,永久条件交互的默认模式是ON FALSE TO TRUE,因为始终都是TRUE,所以实际上本交互根本就无法发挥作用。如果要改变为WHEN TRUE方式,又只能取消永久,致使流程中断,真叫人为难

    解决的办法就是增加一个变量,使其能够不断在FALSETREU或者01间变动,从而可以响应ON FALSE TO TRUE

    (1)修改新加入的条件交互为:

MOVE=0

    MOVE=0时代表此时鼠标不动。

    (2)打开这个MOVE=0组图标,在其中加入一个计算图标get pos again

--------重新取得鼠标位置

xPos := CursorX

yPos := CursorY

    (3)copy所有用于跟随的文字和等待图标,paste到接下来的流程线上,并成组为跟随文字

    (4)在条件交xPos<>CursorX | yPos<>CursorY组图标中,在开头加入计算图标move:=1,程序也是:

move:=1

    (4)在条件交互xPos<>CursorX | yPos<>CursorY组图标中,在结尾加入计算图标move:=0,程序也是:

move:=0

    这样,进入条件交xPos<>CursorX | yPos<>CursorY后,默move=0就会变为1,出来时又变回为0,实现了ON FALSE TO TRUE的变化。同时因为出来时为0,使鼠标从运动到停止时立刻开始响应move=0条件交互,使跟随周而复始,生生不息。

<二> 完善程序

    出于系统性和调试方面的考虑,都有必要作个简单的程序框架。

    (1)加入一个框架结构,作为主程序;

    (2)删除入口处所有图标,设置一个退出按钮和三个导航按钮,导航方向为框架结构下的三个组图标。实际应用中,可以在这些组图标中添加主程序。第一个空组图标只是为了防止程序立刻进入第一个分支,这种办法经常用到。

    (3)将上面两个条件交互移动到入口处,.使程序结构更加合理;

    (4)调试中发现点击导航按钮进入响应分支后,变量move有时会停止于0或者1,可能原因是点击瞬间需要同时响应两个流向:进入主程序分支和响应条件交互,冲突从而导致响应条件交互的失效。所以,在每个分支的最后又加入一个计算图标修正MOVE值,程序为:

----------放置于流程最下面

----------没有这句多次点击按钮后跟随得文字会消失move停滞为0/1

----------本句是改变停滞的 move,重新激活鼠标跟随得条件交互

MOVE:=~MOVE

    (3)其它细节请参考源程序

 

 

[执行效果]

    在AUTHORWARE中执行程序后,文字就会跟随戍边到处飘舞,留下美丽的痕迹。

    点击主程序的任何交互也不会担心穿帮了。

 

[联系作者]

    gsdtom@citiz.net。

 

版权信息:传媒及商业网站如有意刊登,请联系作者