問題編寫手冊/關於問題/外掛/外掛介面
外掛問題需要非常嚴格地遵循某些規則,才能在問題編寫器環境中正常執行。
外掛問題是 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."; }