从Camtasia Studio生成的课件看SCORM
参考 https://blog.csdn.net/cooldragon/article/details/19006835
https://wenku.baidu.com/view/a0bd5ca5284ac850ad02427b.html
D:\CAMTASIA STUDIO\NOI_EMACS_GDB
│ adlcp_v1p3.xsd
│ imscp_v1p1.xsd
│ imsmanifest.xml
│ NOI_emacs_gdb.html
│ NOI_emacs_gdb.js
│ NOI_emacs_gdb.mp4
│ NOI_emacs_gdb.zip 这是打包了其他所有文件的SCORM包
│ NOI_emacs_gdb_config.xml
│ NOI_emacs_gdb_controller.swf
│ NOI_emacs_gdb_embed.css
│ NOI_emacs_gdb_First_Frame.png
│ NOI_emacs_gdb_player.html
│ playerProductInstall.swf
│ scormwrapper.js
│
├─scripts
│ config_xml.js
│ handlebars.js
│ jquery-1.7.1.min.js
│ jquery-ui-1.8.15.custom.min.js
│ modernizr.js
│ player-min.js
│ swfobject.js
│
└─skins
└─overlay
player-min.css
spritesheet.png
实际生成的主要是一个mp4文件,然后SCORM课件就是打包了一堆HTML、XML、JS的zip包(包含了内容包所有文件)
imsmanifest.xml这个文件是主配置文件,顶级元素<manifest>,下面包括3个节点:<metadata>描述内容包整体情况、<organizations>包含学习内容的结构(相同学习内容可以有多种组织形式,一定有一个默认组织形式)、<resources>定义学习包中的资源,如果是4个节点,第4个是(sub)Manifest(s),用来定义下级manifest文件
adlcp_v1p3.xsd和imscp_v1p1.xsd这两个xsd,被主配置文件imsmanifest.xml文件引用,从前缀ADL项目(SCORM模型)和IMS项目(内容打包规范)看,是定义了这两个东西里用到的数据类型之类的构件模块
在主配置文件中,存在类似如下的信息:
<organizations default="TOC1">
<organization identifier="TOC1">
<title>Camtasia Video Course</title>
<item identifier="I_SCO0" identifierref="SCO0">
<title>Untitled</title>
<adlcp:masteryscore>0</adlcp:masteryscore>
</item>
</organization>
</organizations>
<resources>
<resource identifier="SCO0" type="webcontent" adlcp:scormType="sco" href="NOI_emacs_gdb.html">
<file href="NOI_emacs_gdb.html"/>
<dependency identifierref="ALLRESOURCES" />
</resource>
<resource identifier="ALLRESOURCES" type="webcontent" adlcp:scormType="asset">
<file href="NOI_emacs_gdb.html" />
<file href="scripts/jquery-1.7.1.min.js" />
……
即默认学习内容的组织形式是标识为TOC1的那个,这个组织形式里的项目I_SCO0引用了标识为SCO0的资源。从资源部分可以知道,SCO0资源就是链接到NOI_emacs_gdb.html文件(同时依赖ALLRESOURCES资源),所以,这个html文件就是主入口了。
NOI_emacs_gdb.html文件就是一个普通的网页文件,关键部分是用<iframe>插入了一个html文件NOI_emacs_gdb_player.html:
<body>
<iframe class="tscplayer_inline" name="tsc_player" src="NOI_emacs_gdb_player.html" scrolling="no" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</body>
NOI_emacs_gdb_player.html文件的一些代码如下:
<body οnunlοad="pageUnload();">
<div id="tscVideoContent"></div>
<script type="text/javascript" src="NOI_emacs_gdb.js"></script>
<script type="text/javascript" src="scormwrapper.js"></script>
<script src="scripts/jquery-1.7.1.min.js" ></script>
<script src="scripts/jquery-ui-1.8.15.custom.min.js" ></script>
<script src="scripts/swfobject.js"></script>
<script src="scripts/modernizr.js"></script>
<script src="scripts/handlebars.js"></script>
<script src="scripts/config_xml.js"></script>
<script src="scripts/player-min.js" charset="utf-8"></script>
<script type="text/javascript">
TSC.playerConfiguration.setFlashPlayerSwf("NOI_emacs_gdb_controller.swf"); 这里及以下是有关播放器的一堆设置
TSC.playerConfiguration.setMediaSrc("NOI_emacs_gdb.mp4");
TSC.playerConfiguration.setXMPSrc("NOI_emacs_gdb_config.xml");
TSC.playerConfiguration.setAutoHideControls(true);
TSC.playerConfiguration.setBackgroundColor("#000000");
TSC.playerConfiguration.setCaptionsEnabled(false);
TSC.playerConfiguration.setSidebarEnabled(false);
TSC.playerConfiguration.setAutoPlayMedia(false);
TSC.playerConfiguration.setPosterImageSrc("NOI_emacs_gdb_First_Frame.png");
TSC.playerConfiguration.setIsSearchable(false);
TSC.playerConfiguration.setEndActionType("stop");
TSC.playerConfiguration.setEndActionParam("true");
TSC.playerConfiguration.setAllowRewind(-1);
TSC.playerConfiguration.setReportScormComplete(true);
TSC.localizationStrings.setLanguage(TSC.languageCodes.ENGLISH);
$(document).ready(
function (e)
{
initSCORM(); 在文件NOI_emacs_gdb.js中,调用API和LMS平台通信,初始化学习进度等
TSC.mediaPlayer.init("#tscVideoContent"); 应该在scripts/player-min.js中,在指定div上初始化播放器
loadPage(); 在文件NOI_emacs_gdb.js中,设置变量completionStatus = "incomplete"
}
);
</script>
</body>
调用的API来自scormwrapper.js这个API包装文件,该文件定义了apiCall,findAPI,getAPI,getAPIHandle函数,基本原理是getAPIHandle调用getAPI获得句柄,在apiCall内调用LMS平台的功能前,需要先获取此句柄。而getAPI是调用findAPI从各级父窗口搜索得到句柄的。
在moodle中,查看网页源码,可以看到:
<script type="text/javascript" src="http://10.5.10.74/moodle/lib/javascript.php/1509937333/mod/scorm/request.js"></script>
<script type="text/javascript" src="http://10.5.10.74/moodle/lib/javascript.php/1509937333/mod/scorm/datamodels/scorm_13.js"></script>
后面那个js的末尾,存在以下代码:
M.scorm_api={};
M.scorm_api.init=function(Y,def,cmiobj,cmiint,cmicommentsuser,cmicommentslms,scormdebugging,scormauto,scormid,cfgwwwroot,sesskey,scoid,attempt,viewmode,cmid,currentorg,autocommit){
window.API_1484_11=new SCORMapi1_3(def,cmiobj,cmiint,cmicommentsuser,cmicommentslms,scormdebugging,scormauto,scormid,cfgwwwroot,sesskey,scoid,attempt,viewmode,cmid,currentorg,autocommit)
}
注意到window.API_1484_11这个对象,正是包装文件scormwrapper.js中的函数findAPI中“苦苦”查找的东西:
function findAPI( win )
{
var findAPITries = 0;
var theAPI = null;
// Search each parent window until we find the API, encounter a window with no parent / the
// same as the current window, or have reached our MAX_PARENTS_TO_SEARCH to search threshold
while ( ( win.API_1484_11 == null )
&& ( win.API == null )
&& ( win.parent != null )
&& ( win.parent != win )
&& ( findAPITries <= MAX_PARENTS_TO_SEARCH ) )
{
findAPITries++;
win = win.parent;
}
if ( win.API_1484_11 != null )
{
apiVersion = 1;
theAPI = win.API_1484_11;
}
else if ( win.API != null )
{
apiVersion = 0;
theAPI = win.API;
}
return theAPI;
}
从Camtasia Studio生成的课件看SCORM相关推荐
- Camtasia Studio实现画中画视频课件制作方案
画中画视频课件效果是从三分屏课件演变而来. 三分屏视频课件(常用的是powercreator软件采集生成),由html文件将三个文件组合而成,即左上角教师视频,左下是目录菜单,右边课件视频,但由于加载 ...
- Camtasia Studio 9录制高清、超清视频教程
Camtasia Studio 9录制高清.超清视频教程 实例操作:本课以录制高清视频[熊出没奇幻空间 片段]为例进行高清超清视频的录制并生成高清MP4格式 录制工具:Camtasia Studio ...
- 微课微视频制作软件CS(Camtasia Studio)完整学习视频教程-黄波-专题视频课程
微课微视频制作软件CS(Camtasia Studio)完整学习视频教程-9704人已学习 课程介绍 本课程深入浅出介绍了基于Camtasia Studio软件实现微课制作的方法.整个 ...
- Techsmith Camtasia Studio使用分享
前言:前段时间看了"IT人的转型"深有感触,ITer的范围很大,对于直接面对客户的ITer人,我们一直是在做着最基层的工作,而对于日常客户的培训工作,个人深有感触: 例如,以往我们 ...
- Camtasia Studio 专业屏幕录像及视频编辑软件
Camtasia Studio是一款屏幕录像和编辑的软件套装.软件提供了强大的屏幕录像(Camtasia Recorder).视频的剪辑和编辑(Camtasi Studio).视频菜单制作(Cam ...
- camtasia studio 8.2使用技巧集锦
Q: 我需要使用camtasia studio来录制一段视频,中间会对word文档等有文字的地方加上注释, 我怎么将鼠标设置成绘图的那样,按住一拉就是一个带颜色的方框. 麻烦各位看清楚的我问题再回答, ...
- android studio生产签名文件,Android Studio生成keystore签名文件步骤讲解
Android App打包时要用到签名文件,Android Studio生成签名文件步骤如下: Build---Generate Signed Apk...如图: 如果你的project中有2个或者2 ...
- 《微课实战:Camtasia Studio入门精要》——第2章 录制视频 2.1 录制视频基本常识...
本节书摘来自异步社区<微课实战:Camtasia Studio入门精要>一书中的第2章,第2.1节,作者 于化龙,沈婷婷,郝雨,更多章节内容可以访问云栖社区"异步社区" ...
- Android Studio生成keystore签名文件
Android App打包时要用到签名文件,Android Studio生成签名文件步骤如下: Build---Generate Signed Apk...如图: 如果你的project中有2个或者2 ...
最新文章
- ICPC 2005 hangzhou Generator (UVA1358)KMP + 期望DP / 高斯消元
- c++面试中遇到的问题
- android 提示文字,EditText 不能显示提示文字Hint
- hibernate添加spring 事务管理注意问题记录
- 计算机网络系统是弱电工程,弱电工程包括哪些类型?常见的问题又有哪些?
- SVN自助更新:运维利器Puppet实例讲解
- Unity3D场景漫游以及碰撞防止反弹
- java统计中英文字数 Java问题通用解决代码
- Atitit 功能扩展法细则条例 目录 1. 界面ui扩展	2 1.1. 使用h5做界面	2 1.2. 自制h5 ide。。简化ui自定义配置	2 2. 业务逻辑扩展	2 2.1. Bpm流程引擎还
- hexo添加_hexo 添加标签和分类
- 产品原型图设计Axure教程-CSDN就业班-专题视频课程
- 2021-2027全球与中国全自动探针台市场现状及未来发展趋势
- linux系统安装r语言环境,R语言Linux环境安装说明
- 创建不带参数的存储过程
- java提取图片base64,如何把
- 公司是船,我在船上。
- Unity UGUI Button 中文详解-Chinar
- 解决ps默认打开显卡的设置
- Android列表小部件(Widget)开发详解
- 软件 测试员必会英语单词,软件测试人员必备的英语单词(一)
热门文章
- Python 算法 入门到精通 - LeetCode - 3 :回文数
- Attention is all you need pytorch实现 源码解析01 - 数据预处理、词表的构建
- ubuntu安装WPS字体:
- Google 遭遇 21世纪最大反垄断案,互联网将走向何处?
- 零基础小白如何提高学Python的效率?
- 小觅智能荣获2018年度AI赋能行业创新明星
- MATLAB中输出科学计数法_sprintf函数学习-MATLAB
- SSRS日期参数的初始化-设计 SQL
- 《Spark商业案例与性能调优实战100课》第25课:Spark Hash Shuffle源码解读与剖析
- 为 Konsole 单独设置暗色主题