美好的一天!
作为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的版本,但是即使将Storyline变量部署到SCORM Cloud时也应该保存到暂挂数据中,但事实并非如此。我精疲力尽,因此不胜感激。谢谢!