问题编写手册/关于问题/插件/插件接口
插件问题需要非常严格地遵循某些规则,才能在问题编写器环境中正常运行。
插件问题是 Flash 组件,并且以完全相同的方式创建。如果您不熟悉创建 Flash MX 组件,可以在以下位置找到一个很好的教程
http://www.flashcomponents.net/tutorials/triangle/triangle.html
以下值在构造函数中可用
this._maxScore (字符串,完全正确答案的积分)
this._isFeedback (字符串,true 或 false,指示是否正在显示反馈)
this._responseid (字符串,响应名称)
this._listener (字符串,监听器路径)
对于每个响应选项,将在变量中提供一个符号 ID,
this._option0, this._option1, this._option2 等等。
对于每个响应选项,将在变量中以字符串形式提供一个标识符,
this._option0ident, this._option1ident, this._option2ident 等等。
将以字符串形式在变量中提供一些 tabIndex 值,
this._option0TabIndex, this._option1TabIndex 等等。
此外,对于每个响应选项,将在变量中提供一个可访问性字符串,
this._option0access, this._option1access, this._option2access 等等。
插件问题参数中指定的名称/值对也在构造函数中可用。所有值都以字符串形式提供。
您的组件应实现以下方法。
isFullyAnswered()
此方法应返回一个布尔值,true/false。它主要用于当用户需要回答页面上的所有问题时。问题编写器将使用此方法来询问插件问题是否可以被视为处于“完全回答”状态。请注意,此状态与答案是否正确无关,只是表明已经进行了完整的尝试。
getAnswers()
此方法应返回一个字符串数组,其中包含分数作为数组的第一个元素,随后是后续数组元素中的当前响应。如果响应与传递给问题的选项相关,则表示这些选项的字符串在构造函数中作为变量 this._option0ident、this._option1ident、this._option2ident 等可用。
如果您不使用选项作为答案,那么返回有意义的字符串作为响应就可以了。这必须返回一个字符串数组 - 即使问题处理数字,也应该在将这些值作为答案返回之前将其转换为字符串。
插件还应该使用此函数来存储用于提供问题反馈的答案。它可以通过调用以下方法来实现
this.respObject.setPair(this._responseid+"answers",answerArray);
setAnswers(Array)
此方法应根据数组中的答案设置插件问题的状态。此数组将发送一个空数组(当尚未对问题进行任何尝试时),或将返回它先前在调用“getAnswers”方法时收到的数组。
如果插件显示为反馈,则它必须使用以下方法从存储位置访问答案,
answerArray=this.respObject.getPairValue(this._responseid+"answers");
最后一个要求是,您的插件问题在组件状态发生变化时应调用此代码。
eval(this._listener).updateFlash(this._responseid);
这是插件问题显示在屏幕上时发生的事件顺序。
- 用户单击“下一步”按钮,进入包含问题的页面。
- 问题编写器将问题放置在屏幕上,调用插件问题的构造函数。
- 问题编写器调用 setAnswers(Array) 方法。如果这是此实例第一次出现在屏幕上,则该数组将为空。
- 用户尝试回答问题
- 问题调用“eval(this._listener).updateFlash(this._responseid)”。
- 问题编写器调用“getAnswer()”方法并存储该数组。
- 多次重复步骤 4-6。
- 用户单击“下一步”以退出该页面。
- 问题编写器将问题从屏幕上移除,销毁所有信息,除了最后一个答案数组,它会将其存储起来。
要打包您的组件,首先需要创建一个空白的 Flash 文件。将您的组件拖到舞台上,然后将其删除。您的组件应该出现在库中。将 Flash 文件(作为版本 8 或更低版本)编译为 .swf,此文件即您的完成的插件问题。
文件名必须与用于 Flash 组件的符号名称相同,并加上文件扩展名 (.swf)。文件名还包含其他参数,如下例所示。
QWPQ-0-20-0-ComboBoxV1_7.swf
第一个参数: (0) - 这告诉问题编写器为插件问题分配多少屏幕空间。它应该具有以下值之一: 0 - 表示问题编写器应分配与最大选项所需的空间一样多的空间
1 - 表示问题编写器应分配与第一个选项所需的空间一样多的空间
2 - 表示问题编写器应分配足够的空間來显示所有选项
3 - 表示问题编写器不应根据选项大小分配任何空间
第二个参数: (20) - 这是问题编写器认为您的组件需要额外的宽度像素数。
第三个参数: (0) - 这是问题编写器认为您的组件需要额外的高度像素数。
为了使您的组件易于使用,您可以将 Flash 文件的尺寸更改为 200x200,并将以下 ActionScript 添加到主时间轴中的第一帧,以识别符号名称、版本和版权信息
注意:最好进行检查 (this._parent==null),而不是 (this==_root),因为 _root 被问题编写器替换。
if(this._parent==null){ this.createTextField("version", 10, 0, 0, 200, 200); this.version.multiline = true; this.version.wordWrap = true; this.version.text = "Symbol: QWPQ-0-20-0-ComboBoxV1_7.swf\nVersion 1.0\nCopyright 2003-2010 Central Question Ltd."; }