Freeform Drag and Drop - Refuse Incomplete Submissions

Sep 20, 2012

Hi everyone!  I've contacted Articulate customer support with this question and they referred me to the forum.  I apologize for the length, but I'd rather sacrifice brevity for the sake of clarity. Hopefully one of you can help shed some light on this situation! Thank you for your time

First, let me explain what our end goal is:

 1. Build a free form drag-and-drop quiz where the student matches 8 terms to 8 definitions
 2. Do not allow the student to submit responses and proceed until all 8 items on screen have been matched
 3. Do not provide feedback to the student and do not use Storyline to score responses
 4. Provide a reset button to clear all entries on screen

I have everything figured out, but my solution for #2 has a loophole.  Here's a description of my solution:

***

  First I created target and drag objects, which I named t0# and d0# respectively (with # being a number from 1-8). I also created a True/False variable called d0#dropped (again a number from 1-8 replaces the # sign) to indicate whether a drag object has been dropped on any of the available targets on the screen.  Then, I used two triggers to manipulate the value of that variable:

  • The first trigger sets the variable to True if the object has been dropped ON any target area.  
  • The second trigger sets the variable to False if the drag object is dragged OVER any target area.

  For example, when a student drops drag object "d01" into target "t01", the variable d01dropped becomes True.  The instant they drag d01 away from t01, the d01dropped becomes false.  It stays False if they do not drop it on any targets, and it switches back to True if they drop it back on any target.

  Then I attached a trigger to the Submit button which shows an "Incomplete submission" layer if any of the "d0#dropped" variables are equal to False.

***

This solution is *almost* watertight.  Almost.  Here is a scenario where this breaks. Say d01 has been dropped onto t01, and therefore d01dropped is True, and we have "t01 & d01". When a user drops d02 onto the already occupied "t01 & d01" area, Storyline automatically replaces d01 with d02, then it sends d01 back to its original spot.  Because d01 is not being dragged away from the target by the USER, it does not set d01dropped back to False. In this case, both d01dropped and d02dropped are True, even though only "t01 & d02" is complete, and d01 is sitting back in its original location.

In this way, students can submit an incomplete response, because all variables can still equal True even though not all targets are occupied.

I think there are a couple ways to solve this problem, and if you have an affirmative answer to any of these questions (especially the first three), I think we can accomplish the end goal.

  1. Is there a method (e.g., variable, state) to track or indicate whether a given target is currently occupied by a drag object?
  2. Is there a method (e.g., variable, state) to track or indicate whether a given drag object has been snapped back to its starting location?
  3. Is there a way to refuse Storyline from replacing a drag object currently occupying a target with a second drag object?
  4. Do you foresee any solution to this issue using Javascript for Freeform Drag and Drops?  Can you provide us with any documentation or tutorials to help?

I've attached the .story file which implements these features.  Note that I placed text boxes on screen which reference the true/false variables.  Any help you can provide would be greatly appreciated!

Cheers,

Kevin

2 Replies

This discussion is closed. You can start a new discussion or contact Articulate Support.