Storyline 360​​暂停数据处理

时间:2018-11-06 19:00:27

标签: javascript scorm articulate-storyline

美好的一天!

作为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时也应该保存到暂挂数据中,但事实并非如此。我精疲力尽,因此不胜感激。谢谢!

0 个答案:

没有答案