Использование pipwerks SCORM API

в 4:52, , рубрики: Flash-платформа

Привет!

В этом посте хочу описать пример работы c библиотекой pipwerks SCORM API.
Что это за библиотека? Думаю человек который найдет данный пост, наверняка об этом знает :) Это библиотека для общения с LMS (Система дистанционного обучения) по протоколу SCORM.


Собственно само решение состоит из двух частей: обертка на JavaScript — SCORM API Wrapper.js и класса Action Script -SCORM.as

Берем здесь: github.com/pipwerks/scorm-api-wrapper
Страница проекта: pipwerks.com/laboratory/scorm/api-wrapper-javascript/

В общем и целом все достаточно просто, так что может кому-то практической пользы данный пост и не принесет и все же, надо же мне потешить свое самолюбие и что-то написать на хабре после столь долгого затишья! ))

Итак, собственно по делу!

Скачали мы исходники SCORM_API_wrapper.js и SCORM.as, теперь js включим в наш index.html, и пропишем несколько строчек для инициализации и запуска обертки.

<script type="text/javascript">
	pipwerks.SCORM.version = "2004"; // или 1.2
	pipwerks.SCORM.init();
</script>

Кладем SCORM.as в исходники нашей флэшки в какой-нибуть пакет (или по дефолту)

Теперь идем в код и для начала проверим возможность соединения со SCORM API Wrapper.

if(Capabilities.playerType == 'PlugIn' || Capabilities.playerType == 'ActiveX'){
	try{
		_SCORM = new SCORM;	
		_SCORMAvailable = _SCORM.connect();
	}catch(e: Error){
		Log.message("SCORM Error: "+e.message, this);	
	}
}

1. Я добавил проверку на тип плеера, так как бесполезно пытаться связаться с JavaScript если плеер не запущен в браузере.
В данном случае 'ActiveX ' — этозначит запущен в IE (как всегда выделяется), а 'PlugIn' любой другой браузер.
2. Создаю объект класса SCORM, устанавливаю соединение, результат установки соединения либо true либо false, кладу результат соединения в _SCORMAvailable, закрываю соединение. В данном случае я провожу проверку что попытка связи удалась и я в дальнейшем могу снова без проблем открыть соединение.
3. Класс Log это мой самописный логгер.
4. Блок try чтобы не валились ошибки.

Теперь собственно можно спокойно отправлять и получать данные из LMS.

Я приведу пример записи произвольных данных, которые необходимы для работы электронного курса.

//Если SCORM не доступен то дальнейшие действия бесполезны
if(!_SCORMAvailable ) return	
//Производим запись данных	в suspend_data
var status:Boolean = _SCORM.set('cmi.suspend_data', 'Тра ля ля, произвольная строка данных');
//Если вы указали не версию SCORM и она не поддерживается LMS то скорее всего буде false
if( !status )  trace('Что-то пошло не так')
// Если хотим чтобы данные сохранились и были доступны при следующем запуске курса, то сохраняем
_SCORM.save();

Получить данные из suspend_data, можно так

//Если SCORM не доступен то дальнейшие действия бесполезны
if(!_SCORMAvailable ) return
var str:String = _SCORM.get('cmi.suspend_data');
//Посмотрим что получили
trace(str);

В suspend_data можно хранить естественно только текстовые данные (но это не беда, для чего же придумали сериализацию ) и размер хранимых данных зависит от версии SCORM.

Думаю на этом все! Чеcтно? Очень лень писать, мои пальцы не успевают за мыслями и это очень утомляет ))

Спасибо надеюсь, что кому-то этот пост буде полезен.

Автор: iliacmd

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js