跳转到内容

问题编写手册/关于问题/插件/插件接口

来自维基教科书,开放世界开放书籍

插件问题需求

[编辑 | 编辑源代码]

插件问题需要非常严格地遵循某些规则,才能在问题编写器环境中正常运行。

插件问题规范

[编辑 | 编辑源代码]

插件问题是 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);

事件顺序

[编辑 | 编辑源代码]

这是插件问题显示在屏幕上时发生的事件顺序。

  1. 用户单击“下一步”按钮,进入包含问题的页面。
  2. 问题编写器将问题放置在屏幕上,调用插件问题的构造函数。
  3. 问题编写器调用 setAnswers(Array) 方法。如果这是此实例第一次出现在屏幕上,则该数组将为空。
  4. 用户尝试回答问题
  5. 问题调用“eval(this._listener).updateFlash(this._responseid)”。
  6. 问题编写器调用“getAnswer()”方法并存储该数组。
  7. 多次重复步骤 4-6。
  8. 用户单击“下一步”以退出该页面。
  9. 问题编写器将问题从屏幕上移除,销毁所有信息,除了最后一个答案数组,它会将其存储起来。

要打包您的组件,首先需要创建一个空白的 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."; }




转到 插件
华夏公益教科书