2015-03-02 120 views

回答

3

像Andrew提到的那样,要自己完全实现SCORM真的很难。 我相信Moodle甚至不支持Scorm 2004.

AICC通过比较非常容易实现,但在完成重定向等时更加困难。并且功能较少。

在我的系统中,我实现了最小的功能集,以支持使用Articulate等工具生成的简单课程。不同的课程以不同的顺序调用API或在模型中获取/设置不同的值,因此您需要严格测试任何新的课程格式。这是我发现最难的部分是补偿不同课程所表现出的不同行为。

你提到的vsscorm实际上是一步 解释最好的一步,我已经就如何实现服务器端找到我想 他起身到60个职位,因为他实现越来越多。
http://www.vsscorm.net/

一旦你得到它与服务器进行通信的鲁斯蒂奇文档和运行时 API的参考是参考模型值说明和 默认值
很有帮助 http://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/

Pipwerks有一些有趣的工具和尽管他们的博客帖子主要集中在创建课程上,但他们都是 。
http://pipwerks.com/downloads/

此外ADL文档,但它已经很长时间,因为我看着他们。 http://www.adlnet.gov/scorm/scorm-version-1-2/

如果你下载的SCORM 1.2版(Basic运行时调用),并放置在一个HTML文件贴在下面在使用过程中的根目录下的代码,然后通过Web服务器打开的浏览器页面它会使课程认为它在LMS内部足以不抱怨,并会记录它所做的所有api调用。
http://scorm.com/scorm-explained/technical-scorm/golf-examples/

<html> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
    <script> 
     var API = {}; 

     (function ($) { 
      $(document).ready(setupScormApi()); 

      function setupScormApi() { 
       API.LMSInitialize = LMSInitialize; 
       API.LMSGetValue = LMSGetValue; 
       API.LMSSetValue = LMSSetValue; 
       API.LMSCommit = LMSCommit; 
       API.LMSFinish = LMSFinish; 
       API.LMSGetLastError = LMSGetLastError; 
       API.LMSGetDiagnostic = LMSGetDiagnostic; 
       API.LMSGetErrorString = LMSGetErrorString; 

       window.open("shared/launchpage.html", "popupname","resizable,scrollbars,status"); 
      } 
      function LMSInitialize(initializeInput) { 
       displayLog("LMSInitialize: " + initializeInput); 
       return true; 
      } 
      function LMSGetValue(varname) { 
       displayLog("LMSGetValue: " + varname); 
       return ""; 
      } 
      function LMSSetValue(varname, varvalue) { 
       displayLog("LMSSetValue: " + varname + "=" + varvalue); 
       return ""; 
      } 
      function LMSCommit(commitInput) { 
       displayLog("LMSCommit: " + commitInput); 
       return true; 
      } 
      function LMSFinish(finishInput) { 
       displayLog("LMSFinish: " + finishInput); 
       return true; 
      } 
      function LMSGetLastError() { 
       displayLog("LMSGetLastError: "); 
       return 0; 
      } 
      function LMSGetDiagnostic(errorCode) { 
       displayLog("LMSGetDiagnostic: " + errorCode); 
       return ""; 
      } 
      function LMSGetErrorString(errorCode) { 
       displayLog("LMSGetErrorString: " + errorCode); 
       return ""; 
      } 
      function displayLog(textToDisplay){ 
       var loggerWindow = document.getElementById("logDisplay"); 
       var item = document.createElement("div"); 
       item.innerText = textToDisplay; 
       loggerWindow.appendChild(item); 
      } 
     })(jQuery); 
    </script> 
    <div id="logDisplay"> 
    </div> 
</html> 
1

您是想创建一个SCORM播放器还是正在创建课程?我们有一些伟大历程样本这里:

http://scorm.com/scorm-explained/technical-scorm/golf-examples/

我们也有我们的网站上一些好的文档,以及:

http://scorm.com/scorm-explained/scorm-resources/

让我知道,如果你有具体问题,我们当然可以试着让你走上一条道路。

谢谢


[email protected]

+0

一个SCORM播放器。我没有任何具体问题,只是寻找类似于我发布的链接的教程/示例/代码。 – 2015-03-02 21:44:45

0

Building a SCORM player is hard。您确定要在SCORM规范的生命周期的这个阶段构建SCORM播放器,尤其是因为有大量的commercial甚至open source选项已经存在?对于开源选项,玩家通常会嵌入到开源LMS中,因此需要提取(或者您可以使用OS LMS!)

您可能会发现查看Tin Can API这是一种新的规范旨在取代SCORM,然后再投入大量时间。 SCORM支持在当今世界依然非常重要,但是了解Tin Can可能会影响您的SCORM玩家构建/购买决策;如果你打算在短时间内使用它,那么建立自己的系统就没那么重要了。

0

我认为主要的困难是解析specificaion。大多数SCORM 1.2是可选的,所以你可以选择和选择你想要支持的内容。触发错误代码,诊断消息,是否验证。所有你可以做出的决定。但从JavaScript的角度来看,它与Nathan所展示的一样简单,除了需要构建可以使用JSON做为例子的CMI对象之外。

我设置了一个类似的模拟器,用于在本地运行https://github.com/cybercussion/SCOBot/blob/master/QUnit-Tests/js/scorm/SCOBot_API_1484_11.js,同时考虑SCORM 2004。两个版本之间的名称空间已更改,因此它不是1:1。这不包括通常由真正的运行时抛出的所有丰富的规则,验证和错误消息,并不意味着这一点。

构建完整的运行时API可能非常耗时。您通常需要混合使用测试驱动开发,并且扫描数百页规范。

  1. 设置你的API
  2. 设置你的学生尝试
  3. 装入内容
  4. 等待用户interactivty
  5. 你需要张贴在LMSCommit您的学生尝试( '')。这意味着通常将一个同步Ajax Post发布到后端。我见过其他LMS系统采用非缓存方法,其中每个LMSGetValue/SetValue都是往返服务器的往返行程。 SCORM并没有真正指出这里最好的做法,但是这种喋喋不休导致了DNS Lag(沙滩球,小时眼镜)的疯狂数量和用户经验的减弱。

有很多的使用案例,但我不会说你没有检查一切。无论有多好的知识。