감사합니다.이 책을 읽어 주셔서 감사합니다.SCORM 2004에서 문제가 발생했을 때 문제가 발생했습니다.
SCORM에 대한 경험이 많지 않습니다. 지금까지 SCORM 1.2에서 항상 작업 해 왔지만 SCORM 2004에서 프로젝트를 제공하라는 요청을 받았습니다. Dreamweaver에서 직접 HTML5로 작성된 코스 용이며 외부 파일로 JS를 연결했습니다.
무엇이 도움이 되었습니까? 1) 수업을 종료하고 다시 열 때 내가 떠난 페이지부터 시작하는 것으로 가정합니다. 불행하게도 항상 첫 번째 페이지에서 다시 시작됩니다. 2) 레슨은 레슨의 마지막 페이지에 도달하기 전까지는 "완료"로 표시되어서는 안되지만, 불행히도 레슨을 시작하자마자 자신을 "완료"로 표시합니다.
다음은 세 가지 HTML 샘플 (강의 첫 페이지, 수업의 중간 페이지 및 강의 최종 페이지)부터 시작하여 내 SCORM 기능이있는 두 개의 JS 파일로 시작하는 샘플 코드입니다.
1) HTML : 강의 첫 페이지.
<script type="text/javascript" language="javascript" name="mm_scormRTI" src="SCOfunctions.js"></script>
<script language="javascript">
var currentScoPage = scoPage[ i ] ;
SetValue("cmi.location", currentScoPage);
Terminate(); // close out this SCO, we are finished
</script>
<script language="javascript">
Initialize(); // initialize the SCO with the LMS
var currentScoPage = GetValue("cmi.location");
if (currentScoPage != "") {
self.location = currentScoPage;
}else{
currentScoPage = scoPage[0];
}
</script>
</head>
<body onLoad="mm_adlOnload()">
...
2) HTML : 수업의 중간 페이지
<script type="text/javascript" language="javascript" name="mm_scormRTI" src="SCOfunctions.js"></script>
<script language="javascript">
var currentScoPage = scoPage[ i ] ;
SetValue("cmi.location", currentScoPage);
Terminate(); // close out this SCO, we are finished
</script>
</head>
<body onLoad="mm_adlOnload()">
...
3) HTML : 수업의 마지막 페이지
<script type="text/javascript" language="javascript" name="mm_scormRTI" src="SCOcomplete.js"></script>
<script language="javascript">
var currentScoPage = scoPage[ i ] ;
SetValue("cmi.location", currentScoPage);
Terminate(); // close out this SCO, we are finished
</script>
</head>
<body onLoad="mm_adlOnload()" onUnload="mm_adlOnunload()">
...
4) SCORM : 외부 파일 "SCOfunctions.js"
function mm_adlOnload()
{
if (mm_adl_API != null)
{
mm_adl_API.Initialize("");
mm_adl_API.SetValue("cmi.completion_status", "incomplete");
}
}
function mm_adlOnunload()
{
if (mm_adl_API != null)
{
mm_adl_API.SetValue("cmi.completion_status", "incomplete");
mm_adl_API.Commit("");
}
}
GetAPI(window);
var nFindAPITries = 0;
var API = null;
var maxTries = 500;
function ScanForAPI(win)
{
while ((win.API_1484_11 == null) && (win.parent != null) && (win.parent != win))
{
nFindAPITries++;
if (nFindAPITries > maxTries)
{
return null;
}
win = win.parent;
}
return win.API_1484_11;
}
function GetAPI(win)
{
if ((win.parent != null) && (win.parent != win))
{
API = ScanForAPI(win.parent);
}
if ((API == null) && (win.opener != null))
{
API = ScanForAPI(win.opener);
}
}
5) SCORM : exte 파일 "SCOcomplete.js"
var nFindAPITries = 0;
var API = null;
var maxTries = 500;
function ScanForAPI(win)
{
while ((win.API_1484_11 == null) && (win.parent != null) && (win.parent != win))
{
nFindAPITries++;
if (nFindAPITries > maxTries)
{
return null;
}
win = win.parent;
}
return win.API_1484_11;
}
function GetAPI(win)
{
if ((win.parent != null) && (win.parent != win))
{
API = ScanForAPI(win.parent);
}
if ((API == null) && (win.opener != null))
{
API = ScanForAPI(win.opener);
}
}
function mm_adlOnload()
{
if (mm_adl_API != null)
{
mm_adl_API.SetValue("cmi.completion_status", "incomplete");
}
}
function mm_adlOnunload()
{
if (mm_adl_API != null)
{
mm_adl_API.SetValue("cmi.completion_status", "completed");
mm_adl_API.Commit("");
mm_adl_API.Terminate("");
}
}
GetAPI();
내가 뭘 잘못하고 있니? SCORM 2004 프로젝트의 실제 사례가 있거나 적어도 내가 잘못했을 수도있는 것을 볼 수 있다면 크게 환영 할 것입니다.
미리 감사드립니다.
의견을 보내 주셔서 감사합니다! 저는 SCORM에서 일반적으로 아마추어입니다 만, SCORM 2004에 관해서는 초보자 일뿐입니다. 아마 맞을 것 같습니다. 현재 SCO 페이지의 값을 올바르게 얻지 못하고 있다고 생각합니다. 어떻게 그걸 보통 하시겠습니까? 아마도 나는 currentScoPahe = GetValue (cmi.location, something else)와 같은 것을 놓치고 있습니다; –
나는 당신 자신의 코스 안에서 - 당신이 scoPage [i]에 정확한 값을 전달하고 있음을 확인 했습니까? 그런 다음 과정을 다시 시작할 때 cmi.location의 값을 확인하여 과정을 종료하기 직전에 scoPage [i]에 전달한 것과 일치하는지 확인하십시오. – pipwerks