再会!
作为 SCORM 的新手,我想知道 Storyline 360 如何处理其暂停数据。它是否会影响它根据您使用的 LMS 处理挂起数据的方式?
我有一个场景会在完成后为学习者生成证书。它默认为 LMS 的名称,并会在时间线开始时自动填充输入。
对此的要求之一是,当用户将输入更改为他们想要的任何名称时,应将其保存并在下次访问时检索。我使用 SCORM Cloud 作为测试 LMS。我的观察是,对于课程的每次重新启动,它都不会检索我通过 SetVar() 和 GetVar() 方法从上次会话中输入的名称。
我找到了一种解决方法,方法是使用 lmsAPI.SetDataChunk 设置名称,然后使用 lmsAPI.GetDataChunk 检索它。它工作得很好,但是当它部署在我们的 LMS 中时,它仍然会检索到一些东西,但是它是乱码。
这是我目前通过获取 DataChunk 所拥有的:
此代码将通过 GetDataChunk() 检查是否有以前会话中保存的名称
var player = GetPlayer();
var student = lmsAPI.GetStudentName();
var suspenddata = lmsAPI.GetDataChunk();
var username= player.GetVar("userName");
var displayname = "!";
if(suspenddata){
console.log("suspenddata is:"+suspenddata);
username=suspenddata;
}
if(!username){
console.log("username is null, setting to: "+student);
username=student;
}
player.SetVar("userName",username);
if(username){
displayname=" "+username+"!";
}
player.SetVar("displayName",displayname);
player.SetVar("nameInput",username);
当用户决定更改他们的名字时,它将通过 SetVar() 保存到故事情节变量中,并传递给 SetDataChunk(),如下所示
var player = GetPlayer();
var nameinput = player.GetVar("nameInput");
var username = player.GetVar("userName");
var displayname = "!";
if(nameinput){
console.log("nameinput is:"+nameinput);
username = nameinput;
displayname=" "+username+"!";
player.SetVar("displayName",displayname);
player.SetVar("userName",nameinput);
lmsAPI.SetDataChunk(username);
}else{
console.log("nameinput is null");
}
当我将它部署到 SCORM Cloud 时,这段代码运行良好,但正如我之前所说,当部署到我们自己的 LMS 时,它会检索乱码。我还没有尝试部署一个不使用 DataChunk 的版本,但即便如此,当部署到 SCORM Cloud 时,Storyline 变量也应该保存到挂起数据中,但事实并非如此。我无能为力,因此将不胜感激。谢谢!