我花了相当多的时间来搜索SCORM 1.2 API教程/示例,结果证明这是一项非常困难的任务。
我找到的唯一样本是: http://www.vsscorm.net/2009/05/30/ground-rules/
这是一个可靠的教程,但我想从其他来源找到更多信息。
所有建议都表示赞赏。
答案 0 :(得分:9)
就像Andrew提到的那样,自己完全实现SCORM真的很难。
我相信Moodle甚至不支持Scorm 2004.
相比之下,AICC非常容易实现,但在完成时更难以重定向等等。并且功能较少。
在我的系统中,我实现了最少的功能集,以支持使用Articulate等工具生成的简单课程。不同的课程以不同的顺序调用api或在模型中获取/设置不同的值,因此您需要密切测试任何新的课程格式。这是我发现最困难的部分是补偿不同课程所表现出的不同行为。
你提到的vsscorm实际上是最好的一步一步 我已经找到了关于如何实现服务器端的解释 随着他实施的越来越多,他获得了60个职位 http://www.vsscorm.net/
一旦您与服务器通信Rustici文档和运行时 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版本(基本运行时调用)并将下面发布的代码放在课程根目录中的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 :(得分:2)
您是要创建SCORM播放器还是创建课程?我们在这里有一些很棒的课程样本:
http://scorm.com/scorm-explained/technical-scorm/golf-examples/
我们网站上也有一些很好的文档:
http://scorm.com/scorm-explained/scorm-resources/
如果您有具体问题,请告诉我们,我们当然可以尝试让您走上正轨。
谢谢,
乔
support@scorm.com
答案 2 :(得分:1)
我认为主要的困难在于解析具体问题。大多数SCORM 1.2都是可选的,因此您可以选择要支持的内容和数量。触发错误代码,诊断消息,验证与否。你可以做出的所有决定。但是从JavaScript的角度来看,它和Nathan一样简单,除了你需要构建你的CMI对象,你可以用JSON作为例子。
我设置了一个类似的模拟器,用于在本地运行https://github.com/cybercussion/SCOBot/blob/master/QUnit-Tests/js/scorm/SCOBot_API_1484_11.js并考虑SCORM 2004。两个版本之间的名称空间发生了变化,因此它不是1:1。这不包括真正的运行时通常抛出的所有丰富的规则,验证和错误消息,并不是故意的。
构建完整的Runtime API可能非常耗时。您通常需要融入测试驱动开发,并摒弃规范的数百页。
有很多使用案例,但我不会说你没有全部检查。无论如何都要有良好的知识。
答案 3 :(得分:0)
Building a SCORM player is hard。您确定要在SCORM规范生命周期的这个阶段构建SCORM播放器吗,特别是因为已经存在大量commercial甚至open source选项?对于开源选项,播放器通常嵌入到开源LMS中,因此需要提取(或者您可以使用OS LMS!)
您可能会发现查找Tin Can API是有益的,这是一个新规范,旨在替换SCORM,然后再投入大量时间。 SCORM支持在当今世界仍然很重要,但了解Tin Can可能会影响您的SCORM播放器构建/购买决策;如果你打算在更短的时间内使用它,那么建立你自己的东西就没什么意义了。