Attain Objects for Dreamweaver实用教程
作者:DREAMY
第五篇 定义动作管理器(继上一篇)
我也非常不喜欢把一篇完整的文章分为两部分,特别是前后隔离了一个星期的时间,这一点请大家原谅!在上一篇我们讲述的是拖放题的创建过程,我们已经讲述了如何构造它的骨架,在本篇我们将了解如何给拖放题赋予交互行为,因为Attain对象中的动作管理器(Action Manager)才是真正控制在线试题的核心部分。
在动作管理器中列出了应用于一个Attain对象的所有的条件式和动作。这些条件式(conditions)和动作(Action),被有条理地组织成程序段(segment),用来定义当试题运行时交互行为如何进行。使用动作管理器来创建一个新的程序段,定义一个新的条件式和设置具体动作的属性。
通过以上文字,我们可以了解其实动作管理器中由三样最重要的基本元素构成,它们是:条件式(conditions)、动作(Action)和程序段(segment),其中条件式+动作=程序段。
OK,我们了解了动作管理器基本的结构,下面让我们来设置当前拖放题的动作集。但是在设置之前,我们还需要做一件最重要的事情——您已经画好动作的流程图了吗?如果大家对编程有一些基本的概念的话,您会发现动作管理器中的动作就是一张流程图,从上至下,其中也有If...Else...Elso的顺序。下面我列出了当前试题动作所需要的程序段流程。
--Segment - Check three steps (state transition)(程序段:开始执行)
-- if Step 1 - wrap bottle(条件式:如果第一步是包装纸与瓶子之间的相互拖动,那么做下一步)
Show-Hide Layers(动作:显示/隐藏层)
Swap Image(动作:图像互换)
Write To Popup(动作:弹出提示框)
-- if Step 2 - filler to box(条件式:如果第二步是填充物与纸箱之间的相互拖动,那么做下一步)
Show-Hide Layers(动作:显示/隐藏层)
Swap Image(动作:图像互换)
Write To Popup(动作:弹出提示框)
-- if Step 3 - bottle to box
Show-Hide Layers(动作:显示/隐藏层)
Swap Image(动作:图像互换)
Write To Popup(动作:弹出提示框)
Stop(停止)
好了,这就是我们需要试题实现的效果,当然这里为了方便演示,简化了许多,上面的程序流程只是用来实现固定的操作:您只能先做包装纸与瓶子之间的相互拖动,才能进入进一步,不然的话,如果您先做了填充物与纸箱之间的相互拖动(尽管操作正确),那么也是无效的!
好了,现在我们可以定制动作管理器中的流程了。
首先删除Attain对象预置的流程。方法:选择欲操作的程序段,按右上角的Cut键,这里没有DEL键,只能用Cut键代替。
全部删除后,我们开始定制流程,先让我们来定制程序段(segment)。确信您在动作管理器中的下拉菜单中选择了Segment,然后单击Add按钮,这时弹出Segment Editor,让您设置它的相关属性。在Segment Name域后输入合适的名称,比如这里我输入“Segment - Check three steps”,因为该程序段用来检查三个步骤。此外Segment还有一个唯一的选项Segment Evalutaion,有两个选择:Always evaluate from the beginning(Attain对象从开始一直循环执行该程序段);State transition(Attain对象从上一次检查语句的地方开始执行,从而跳过了已经满足条件的条件式),这里我们选择后者-State transition。
根据我们在上面所描述的流程图,我们现在开始定义第一步的条件式,我们需要判断包装纸和瓶子相互之间是不是进行了拖动,确信已经选中了“Segment - Check three steps”程序段,在动作管理器中的下拉菜单中选择Condition,单击Add按钮,就会弹出条件式编辑对话框,哇,又是一张复杂的对话框!(昏倒!!)
在Condition Name后输入该条件式的名称,我们命名为“if Step 1 - wrap bottle”它将显示在动作管理器中。在这里我们说过了要首先判断包装纸和瓶子之间是否产生了拖动事件,所以我们在Expresstion(表达式)域后需要添加二条表达式记录,它们之间是“或”的关系,也就是说两者只要有一条为真,那么该条件式就为真。在对话框的最下面有一排选项用来定义表达式,下面我们来简单介绍一下,限于篇幅,我们不再介绍如何定义表示式,我想根据上面的流程图,大家应该非常清楚如何来定义它们了,如何大家不清楚,请下载原文件,用Attain Objects for Dreamweaver打开看看就一目了解了。
Type域用来选择对象类型。
Object域用来选择是哪一个Attain对象,选择当前我们编辑的Attain对象名称,然后在其后的下拉菜单中选择需要判断的一对角色。
Property域用来选择选择判断何种属性。
Type域用来选择当前表达式的值类型,在这里我们只需要选择True/False,然后在下面的下拉菜单中选择布尔值(True/False)。
OK,根据流程图,我们下一个要定义是一个我们非常熟悉的动作(Show-Hide Layers),它有什么用呢?让我们想一下:当我们把包装纸拖向瓶子时(或者把瓶子拖向包装纸时),我们希望看到的效果是包装纸不见了,而瓶子变成了外部绕着包装纸花纹的瓶子,这如何实现呢?很简单,我们可以先用一个Show-Hide Layers动作隐藏包含包装纸的那层,显示包含瓶子的那层,别急还没有完,然后再用一个Swap Image动作来将原来的瓶子图像换成新的瓶子图像,这样就搞定了!现在大家应该明白为什么要设一个Show-Hide Layersr的动作了吧?具体的设置方法:确信选中的“if Step 1 - wrap bottle”条件式(因为当前动作要在该条件式之中),在动作管理器的下拉菜单中选择Show-Hide Layers动作即可,然后单击Add按钮,里面的设置与在Dreamweaver中Show-Hide Layers动作设置一样(事实是两者是一回事),我在此不再细说(不然的话,这一篇又讲不完了)。
再接下来,我们要Swap Image动作,方法与上面的设置完全一致,关于Swap Image所需要的各种图片,我已经放在压缩包里了,大家请留意!
作为一个良好的习惯,在这个条件式结束的时候,我们还要设置一个Write To Popup动作。关于这个动作,我们在第二篇中已经详细介绍过了,它是Attain Objects新增的一个动作,常用来设置一些提示信息,关于动作的设置是一致的,我也不多说了,打一些什么样的提示信息,就是您自己的事了。
好了,好了,我们已经简单地讲述了程序段“Segment - Check three steps”中的第一个条件式“if Step 1 - wrap bottle”的创建,大家如果急着看效果的话,可以暂时按OK,离开Attain对象的编辑环境,在浏览器中来预览一下成果,不过您目前只能看到第一步的成绩,还有剩下的二个条件式我就不再一一复述了,(不然,讲起来又是一大段,我又要多写几个小时…… :( )我想根据上面的流程图大家应该很清楚做出来了。
Attain Objects for Dreamweaver作为一个非常新的工具软件,每个人都是初学者,如果教程之中有什么不对之处,非常欢迎大家给我写信,我的邮箱:[email protected]。