0

再会!

作为 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 变量也应该保存到挂起数据中,但事实并非如此。我无能为力,因此将不胜感激。谢谢!

4

0 回答 0