簡體   English   中英

Captivate - LMS - SCORM通信問題

[英]Captivate - LMS - SCORM communication problems

我正在開發符合SCORM的LMS,並且在Captivate生成的內容方面存在一些問題。

基本上,行為是:如果你看到一個SCO(吸引生成的內容),例如每張幻燈片中有15個幻燈片和1個問題,我的lms不跟蹤所有15個問題,只跟蹤前3個或4個。如果你等了很長一段時間,或者如果你把內容放慢,它工作正常。

經過大量的谷歌搜索,調試和追蹤,最后,我發現了兩個主要問題:

1)Captivate - SCORM API通信是異步的(與flash-javascript通信相同)。 因此,當用戶快速看到內容時,函數調用越來越失敗,並且最后,用戶可能正在回答問題15,並且內容正在發送問題4信息。 我無法更改Flash或JS-Flash界面,因為這是由Captivate提供的。

有一種方法可以實現這種同步嗎? 我的意思是,迫使閃光燈等一些方式?

2)每次調用函數都需要更長的時間,例如,setValue第一次需要7毫秒,最后一次需要調用200。

要理解這個問題,這里有一點背景:Captivate內容(所有內容確實但更多的內容)多次調用特定函數,SetValue函數,一個SCORM API函數。 此函數接受兩個參數(fieldName,value),第一個是要設置的字段的名稱,第二個是新值。 在我的實現中,此函數首先使用正則表達式驗證值,然后在對象中設置值。

好的,我可以添加更多信息,但我不知道什么是真正重要的,我不希望你修改我的代碼而不看它,但我沒有想法,需要新的意見,想法,方向....也許那個sombody問正確的問題......幫助:)

謝謝

發布SCORM時,Captivate不使用同步通信方法。*根據瀏覽器的不同,Captivate使用FSCommand或old-school getURL方法與HTML文件通信; 然后,HTML文件使用JavaScript通過SCORM API將數據中繼到LMS。

響應(如果有)從JavaScript中繼到FSCommand或代理SWF(用於getURL ),然后通過回調函數在Captivate內部監視。 此回調函數使用計時器,這可能是您的問題所在。

如果您將g_intAPIType設置為0,則強制瀏覽器使用FSCommand,這在所有瀏覽器和操作系統中都不受支持。 g_intAPIType設置為1意味着您強制瀏覽器使用getURL ,這是跨瀏覽器但有一些缺點(包括大量點擊聲)。

在這兩種情況下,數據都是通過內部隊列腳本發送的,該腳本使用waitForResponse回調函數。

您遇到的性能問題可能是由於排隊造成的,並且由於定時器附加到waitForResponse ,異步通信會使問題waitForResponse 更改g_intAPIType可能只會對性能問題產生輕微影響,但使用getURLg_intAPIType=1 )可能有助於提高瀏覽器與瀏覽器之間的一致性。

無論g_intAPIType設置如何,都無法阻止內部跟蹤機制使用異步waitForResponse函數,因此在獲取/設置數據時無法阻止Captivate使用定時器; 在一段時間內,你可能會開始注意到你所描述的更長和更長的延遲,尤其是 如果你打電話給LMS。

(*小例外:我被告知Captivate 4和5使用ExternalInterface如果項目是在AS3中構建的並且是為SCORM 2004發布的,但是看起來仍然使用隊列和waitForResponse計時器,基本上像處理列出的異步方法一樣處理ExternalInterface以上。)

一些選項:

你可以改變你的問題。 而不是每幀1個將所有問題放在1幀上。

否則,您需要在SCORM Player JavaScript中執行一些JavaScript魔術。 我將首先使用像JSMin這樣的工具來最小化JS代碼。

然后嘗試緩存JS文件,使它們只加載一次。 我懷疑每個幀都會反復調用這些文件。

在搞砸時,在發布scorm時,您會看到選項“最后發送跟蹤數據”,使用此選項,它將解決您的問題。

“有一種方法可以實現這種同步嗎?我的意思是,迫使閃存等待某種程度?”

顯然,問題是這樣的:“Captivate是唯一一個異步調用SCORM JavaScript函數的SCO。Firefox是唯一不強制SCO和支持JavaScript之間同步通信的瀏覽器。當在Firefox上運行的Captivate SCO提交時,提交對其中一個JS函數的狀態更新,Captivate在提交下一個狀態更新之前不會等待成功或失敗響應。由於Captivate的通信非常冗長而且JavaScript不是多線程的,因此測驗狀態提交可以疊加並覆蓋每個其他。這可能導致數據丟失 - 尤其是對於較長時間的測驗。[...]

如果你想看到異步問題與任何其他LMS,使用Firefox需要很長的Captivate的測驗並很快回答問題。 接近尾聲的一些問題將被刪除..“(interzoic.com論壇)

也許是一個解決方案 :“當我強制g_intAPIType為0(進入.htm文件)時,緩慢的問題得到解決,因此它強制Captivate進行通信,就好像進入IE一樣。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM