Adobe Captivate - 拖放

Adobe Captivate - Drag and Drop

我正在使用 Adob​​e 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 位置 也需要考虑在内。
  • 我没有在响应式或弹性项目上对此进行测试,我不确定 Adob​​e 在这些情况下如何定位对象,这适用于固定大小的项目。
  • IE11 可能不支持箭头函数,如果您需要支持,您可能需要使用传统语法重写回调函数。