Forum Discussion

ELOUPEI's avatar
ELOUPEI
Community Member
2 days ago

Drag and Drop With Feedback Layers BUT NOT Correct or Incorrect

I'm trying to figure out a drag and drop where the user has nine dragable items and seven drop zones. The goal isn't to find the seven correct items of the nine. The user can drag any of the nine in an order into the drop zones. They'll snap into place and/or return to their original spot if something else gets put on top of them. When I converted my slide to freeform drag & drop, that part all worked fine.

The feedback for the user is represented by two layers and a button (that's hidden and waiting to be revealed). If the learner selects less than four items, they get the layer saying too few selected. If the learner fills up all seven slots, they get the too many layer. If they select between four and six items, the next button becomes visible and they are able to move onto the next slide. The goal is the user needs to keep submitting then fixing their response until they have between four and six items dragged into the drop zones. And I've been able to set all of that up on the slide in a way that I think works. But I don't know for sure...and here's why... 

The problem: I can't figure out how to get Storyline to keep count of the number of items the user has dragged and dropped so that when they click the finish button, they get one of the feedback layers or they see the next button. Everything I've tried leads to either the variable I'm using to tally not moving from zero, or changing to one but to no other increment/decrement no matter how many items I drag and drop or remove. File attached.

7 Replies

  • Silverfire's avatar
    Silverfire
    Community Member

    Hi, I downloaded the story and previewed it. At first, the Finish button wasn't displaying, so I disabled that trigger. I didn't see where TotalPlaced was incremented at all, though. Even with the Finish button displaying, I always got the "Too Few" slide, because TotalPlaced remained at zero. 

  • Nedim's avatar
    Nedim
    Community Member

    I wanted to help, but when I opened your story file, a lot of “unassigned” values popped up, and I’m not sure what they’re supposed to represent. 

     

  • Hi ELOUPEI,

    You can use states to identify whether an object is dropped. If the object isn’t normal, then add 1 to TotalPlaced; if the state is normal, subtract 1 from TotalPlaced. I also added a new variable called ActivityBegin to prevent subtracting a value from TotalPlaced, since the object states are normal at the very beginning. So other than the first trigger below, for each drag item, you will need two triggers for counting:

    1. Set ActivityBegin to True when TotalPlaced changes.
    2. Add 1 to TotalPlaced when the state of crit# isn’t normal.
    3. Subtract 1 from TotalPlaced when the state of crit# is normal, if the ActivityBegin value is true.

     

    However, if users drag the crit# out of the drop zone, its state won’t return to normal and the counting will be incorrect. So each crit# should have a trigger to return its state to normal to ensure the counting is correct.

    • Change the state to normal when crit# stops intersecting with the hotspot (table area).

     

    • ThierryEMMANUEL's avatar
      ThierryEMMANUEL
      Community Member

      Unfortunately, JoanneChen​ , I've run into another problem. If I move the proposals WITHOUT taking them out of the starting area (I know, it's stupid), the variable increases to possibly 9. And I can't bring the variable back down.

      • ELOUPEI's avatar
        ELOUPEI
        Community Member

        Yeah, it doesn't seem to be following the triggers of subtracting one from the count or setting the state of the criteria back to normal. And here's a video showing some of the other things that are happening with the count when you try adding and removing various criteria. The "argument/purpose" criteria is acting the weirdest of them all. 

        https://360.articulate.com/review/content/62098877-4d92-421d-ad04-494ef090f311/review

  • ThierryEMMANUEL's avatar
    ThierryEMMANUEL
    Community Member

    Hello ELOUPEI​ 

    I explored (like JoanneChen​) and abandoned solutions using states. Too complicated, because in addition, you want to use a built-in drag & drop to use the “automatic return of a movable element to its starting point if the learner places another element on top of it” function.

    I suggest another way of doing this, which I have used before.

    When you press the Finish button, you trigger the motion path of an element (mobile counter) that adds the value 1 to your TotalPlaced variable each time it encounters an element moved by the learner. If the mobile counter crosses 3 elements placed in the drop zone, TotalPlaced = 3, and the message “Too few” is displayed. Etc. Watch and study the attached demo, slide 2.

    It's a bit of a DIY job, you have to make sure that the elements don't touch each other so that the mobile crosses each one of them, and not a bunch of elements, and the speed must not be too fast so that Storyline has time to trigger the triggers (yes, really!).

    Here, the trajectory is straight, but imagine an activity where objects are dragged&dropped all over the screen. The mobile device can follow a very complex zigzag motion path to cross paths with the objects and count them. That's what I used a while ago.

    Note: there is a small error in your triggers panel. The FINISH button ONLY appears/is active when the variable is between 4 and 6. It therefore cannot trigger other actions whose condition is that the variable is <3 or >6.

    I hope this helps.

     

     

  • Hi ThierryEMMANUEL,

    I didn’t realize that the state would change to dropIncorrect when the item dropped outside the designated drop areas. This should be taken into account because it could happen in the real world—we never know what users might do, LOL. So, I moved the hotspot to the start area and changed the trigger to:

    • Change the state to normal when crit# is dropped on the hotspot (inital area).

     
    ELOUPEI, I hope this fixed the issue you encountered.