Adobe Captivate - 拖放
Adobe Captivate - Drag and Drop
我正在使用 Adobe Captivate 制作在线学习 activity,我们正在使用效果很好的拖放。唯一的问题是它不是动态的,因此一旦学生正确了,他们就可以跟随位置再次正确。
是否可以调整拖放对象的位置,以表明学生已经理解了问题,而不仅仅是遵循记住的模式。
不是开箱即用的。没有像选择题答案那样的“Shuffle Drag Sources”复选框。通过将此脚本放入您的 OnEnter 操作并选择“执行 Javascript”:
可以实现您所要求的内容
$(function () {
var dss = cp.DD.CurrInteractionManager.m_ActiveInteraction.m_dsList;
var ypos = dss.map((i) => {
return $("div[id='" + i.n + "']").css("top");
});
ypos = shuffle(ypos);
dss.forEach((o, i) => {
$("div[id='re-" + o.n + "c']").css("top", ypos[i]);
$("div[id='" + o.n + "']").css("top", ypos[i]);
});
function shuffle(arr) {
for (var i = 0; i < arr.length; i++) {
var randId = Math.floor(Math.random() * arr.length);
var tmp = arr[i];
arr[i] = arr[randId];
arr[randId] = tmp;
}
return arr;
}
});
出于 copy/paste 的目的,我没有在这里发表评论,因为那个可怕的 Captivate JavaScript window 与空格非常不稳定,所以这里是一个逐个陈述的演练:
var dss = cp.DD.CurrInteractionManager.m_ActiveInteraction.m_dsList;
将所有拖动源收集到一个数组中。
var ypos = dss.map((i) => {return $("div[id='" + i.n + "']").css("top")});
提取每个对象的 Y 位置。
ypos = shuffle(ypos);
调用函数(定义如下)随机打乱 Y 位置数组的顺序。
dss.forEach((o, i) => {$("div[id='re-" + o.n + "c']").css("top", ypos[i]);
$("div[id='" + o.n + "']").css("top", ypos[i]);});
循环拖动源并将每个拖动源放置到新位置,同时带来 canvas。
这里有几点警告。
- 如果允许多次尝试,“重置”按钮将放置
将源拖回到原来的位置。
- 这假设拖动源都与相同的排列
水平位置。如果它们四处散落,则 X 位置
也需要考虑在内。
- 我没有在响应式或弹性项目上对此进行测试,我不确定 Adobe 在这些情况下如何定位对象,这适用于固定大小的项目。
- IE11 可能不支持箭头函数,如果您需要支持,您可能需要使用传统语法重写回调函数。
我正在使用 Adobe Captivate 制作在线学习 activity,我们正在使用效果很好的拖放。唯一的问题是它不是动态的,因此一旦学生正确了,他们就可以跟随位置再次正确。 是否可以调整拖放对象的位置,以表明学生已经理解了问题,而不仅仅是遵循记住的模式。
不是开箱即用的。没有像选择题答案那样的“Shuffle Drag Sources”复选框。通过将此脚本放入您的 OnEnter 操作并选择“执行 Javascript”:
可以实现您所要求的内容$(function () {
var dss = cp.DD.CurrInteractionManager.m_ActiveInteraction.m_dsList;
var ypos = dss.map((i) => {
return $("div[id='" + i.n + "']").css("top");
});
ypos = shuffle(ypos);
dss.forEach((o, i) => {
$("div[id='re-" + o.n + "c']").css("top", ypos[i]);
$("div[id='" + o.n + "']").css("top", ypos[i]);
});
function shuffle(arr) {
for (var i = 0; i < arr.length; i++) {
var randId = Math.floor(Math.random() * arr.length);
var tmp = arr[i];
arr[i] = arr[randId];
arr[randId] = tmp;
}
return arr;
}
});
出于 copy/paste 的目的,我没有在这里发表评论,因为那个可怕的 Captivate JavaScript window 与空格非常不稳定,所以这里是一个逐个陈述的演练:
var dss = cp.DD.CurrInteractionManager.m_ActiveInteraction.m_dsList;
将所有拖动源收集到一个数组中。
var ypos = dss.map((i) => {return $("div[id='" + i.n + "']").css("top")});
提取每个对象的 Y 位置。
ypos = shuffle(ypos);
调用函数(定义如下)随机打乱 Y 位置数组的顺序。
dss.forEach((o, i) => {$("div[id='re-" + o.n + "c']").css("top", ypos[i]);
$("div[id='" + o.n + "']").css("top", ypos[i]);});
循环拖动源并将每个拖动源放置到新位置,同时带来 canvas。
这里有几点警告。
- 如果允许多次尝试,“重置”按钮将放置 将源拖回到原来的位置。
- 这假设拖动源都与相同的排列 水平位置。如果它们四处散落,则 X 位置 也需要考虑在内。
- 我没有在响应式或弹性项目上对此进行测试,我不确定 Adobe 在这些情况下如何定位对象,这适用于固定大小的项目。
- IE11 可能不支持箭头函数,如果您需要支持,您可能需要使用传统语法重写回调函数。