SCORM 準拠の LMS を開発していますが、Captivate で生成されたコンテンツに問題があります。
基本的に、動作は次のとおりです。たとえば、15 枚のスライドと各スライドに 1 つの質問がある SCO (captivate によって生成されたコンテンツ) がすぐに表示される場合、私の lms は 15 の質問すべてを追跡しておらず、最初の 3 つまたは 4 つだけを追跡しています。最後に長い時間、またはコンテンツをゆっくりと取ると、問題なく動作します。
何度も Google で検索し、デバッグとトレースを行った結果、最終的に 2 つの主な問題が見つかりました。
1) Captivate - SCORM API 通信は非同期です (flash - javascript 通信と同じです)。そのため、ユーザーがコンテンツをすばやく見ると、関数呼び出しはますます処理されなくなり、最終的にはユーザーが質問 15 に回答し、コンテンツが質問 4 の情報を送信している可能性があります。Flash または JS-Flash インターフェイスは Captivate によって提供されているため、変更できません。
この同期を行う方法はありますか?? つまり、フラッシュを何らかの方法で強制的に待機させるということですか?
2) 関数が呼び出されるたびに時間がかかっています。たとえば、setValue は最初に 7 ミリ秒かかり、最後に呼び出されたときに 200 ミリ秒かかります。
この問題を理解するために、少し背景を説明します。Captivate コンテンツ (実際にはすべてのコンテンツですが、より Captivate を含む) は、SCORM API 関数の 1 つである特定の関数 SetValue 関数を何度も呼び出します。この関数は 2 つのパラメーター (fieldName、value) を受け取ります。最初のパラメーターは設定するフィールドの名前で、2 番目のパラメーターは新しい値です。私の実装では、この関数はまず正規表現を使用して値を検証し、次にオブジェクトに値を設定します。
わかりました、もっと多くの情報を追加できますが、本当に重要なことはわかりません。コードを見ずに修正することを望んでいませんが、アイデアが不足しており、新しい意見、アイデア、方向性が必要です.... 誰かが正しい質問をするかもしれません...助けて:)
ありがとう