﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Millisecond Forums » Millisecond Forums » Inquisit 7  » Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><generator>InstantForum 2017-1 Final</generator><description>Millisecond Forums</description><link>https://forums.millisecond.com/</link><webMaster>Millisecond Forums</webMaster><lastBuildDate>Wed, 01 Jul 2026 22:48:07 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41898.aspx</link><description>&lt;blockquote data-id="41897" class="if-quote-wrapper" unselectable="on" data-guid="1782244484719" contenteditable="false" id="if_insertedNode_1782244484314"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41897" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41897" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41897" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Wasabi8888 - 6/23/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41897"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi Dave,&lt;br/&gt;&lt;br/&gt;I noticed that in the Continuous Inclusion of Other in the Self (IOS) script, the labels move together with the circles when they are dragged. I’m not quite sure how this is implemented. Is it possible to use the same approach for the dots in the current task?&lt;br/&gt;&lt;br/&gt;Thanks&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="41897"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;They're not moved *while* the circle is dragged. Once the circle has been dropped, i.e. is at its new position, the label text is set to a new positioin accordingly. It happens after the dragging and dropping has been completed, a different thing than what you asked.</description><pubDate>Tue, 23 Jun 2026 21:04:01 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41842.aspx</link><description>Hi,&lt;br/&gt;&lt;br/&gt;I adapted the Continuous Inclusion of Other in the Self (Continuous IOS) script from the Inquisit test library. However, instead of measuring circle overlap, I would like to measure perceived social distance using draggable dots on a continuous line scale (similar to a slider).&lt;br/&gt;&lt;br/&gt;Specifically:&lt;br/&gt;* In the first part, participants would drag a dot on the right side (representing one identity) along a line to indicate the perceived distance between two identities (measured in millimetres or pixels), while the dot on the left side remains fixed.&lt;br/&gt;* In the second part, participants would drag three dots (e.g., self, friend, stranger) on the same line to represent the relative distances between identities.&lt;br/&gt;&lt;br/&gt;Does anyone know how this could be implemented in Inquisit?&lt;br/&gt;Any suggestions would be greatly appreciated!</description><pubDate>Tue, 23 Jun 2026 21:03:23 GMT</pubDate><dc:creator>Wasabi8888</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41901.aspx</link><description>&lt;blockquote data-id="41900" class="if-quote-wrapper" unselectable="on" data-guid="1782248589739" contenteditable="false" id="if_insertedNode_1782248588289"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41900" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41900" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41900" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 6/23/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41900"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="41899" class="if-quote-wrapper" unselectable="on" data-guid="1782248589739" contenteditable="false" id="if_insertedNode_1782247787860"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41899" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41899" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41899" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Wasabi8888 - 6/23/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41899"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks for the clarification. I see the difference now.&lt;br/&gt;In that case, would you mind providing a simple example of how to update the label position after the dot has been dropped?&lt;br/&gt;&lt;br/&gt;Many thanks&lt;br/&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="41899"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;There ae no labels in your code.&lt;a class="if-quote-goto quote-link" href="#" data-id="41900"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;[code]&amp;lt;defaults&amp;gt;&lt;br/&gt;/ canvasAspectRatio = (4,3)&lt;br/&gt;/ canvassize = (100%, 100%)&lt;br/&gt;/ canvasposition = (50%,50%)&lt;br/&gt;&amp;lt;/defaults&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;script&amp;gt;&lt;br/&gt;// function to calculate the euclidean distance between two points&lt;br/&gt;function calculateDistance(x1, y1, x2, y2) {&lt;br/&gt;    let deltaX = x2 - x1;&lt;br/&gt;    let deltaY = y2 - y1;&lt;br/&gt;    return Math.sqrt(deltaX ** 2 + deltaY ** 2)&lt;br/&gt;}&lt;br/&gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ dotFriendPositioned = false&lt;br/&gt;/ dotSelfPositioned = false&lt;br/&gt;/ dotStrangerPositioned = false&lt;br/&gt;&lt;br/&gt;/ distanceSelfFriend = "n/a"&lt;br/&gt;/ distanceSelfStranger = "n/a"&lt;br/&gt;/ distanceFriendStranger = "n/a"&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;expt perceived_distance&amp;gt;&lt;br/&gt;/ blocks = [&lt;br/&gt;    1 = cIOS_Friend_Self;&lt;br/&gt;    //2 = cIOS_Self_Friend_Stranger;&lt;br/&gt;    ]&lt;br/&gt;&amp;lt;/expt&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;###################################################################################################################&lt;br/&gt;&lt;br/&gt;&amp;lt;block cIOS_Friend_Self&amp;gt;&lt;br/&gt;/ trials = [1=start_ios_friend_self]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text selfLabel&amp;gt;&lt;br/&gt;/ items = ("self")&lt;br/&gt;/ erase = false&lt;br/&gt;/ txBGColor = transparent&lt;br/&gt;/ fontStyle = ("Arial", 4%)&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial start_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;     shape.dotFriend1.hPosition = 10%;&lt;br/&gt;     shape.dotFriend1.vPosition = 60% ;&lt;br/&gt;     shape.dotSelf1.hPosition = 90%;&lt;br/&gt;     shape.dotSelf1.vPosition = 60%;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text.selfLabel.hPosition = shape.dotSelf1.xPct;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text.selfLabel.vPosition = shape.dotSelf1.yPct - 5;&lt;br/&gt;     // dots have not been positioned yet&lt;br/&gt;     values.dotSelfPositioned = false;&lt;br/&gt;     // reset distances from previous round&lt;br/&gt;     values.distanceSelfFriend = "n/a";&lt;br/&gt;     values.distanceSelfStranger = "n/a";&lt;br/&gt;     values.distanceFriendStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, selfLabel]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;    return trial.position_ios_friend_self&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text instructions_ios_friend_self&amp;gt;//edit instructions here&lt;br/&gt;/ items = ("Now we’ll ask you to move the circles in the same way to describe the relationship between Friend and You.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br/&gt;")&lt;br/&gt;/ fontStyle = ("Arial", 2.5%, false, false, false, false, 5, 1)&lt;br/&gt;/ position = (50%, 20%)&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial position_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;    if (!values.dotSelfPositioned) {&lt;br/&gt;        button.doneButton.skip = true; // don't show the done button&lt;br/&gt;    } else {&lt;br/&gt;        button.doneButton.skip = false; // otherwise show it&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;    // if a given dot has been positioned, set its position flag to true&lt;br/&gt;    if (this.lastDropSource == "dotSelf1") {&lt;br/&gt;    values.dotSelfPositioned = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text.selfLabel.hPosition = shape.dotSelf1.xPct;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text.selfLabel.vPosition = shape.dotSelf1.yPct - 5;&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend1, dotSelf1, doneButton, debug, instructions_ios_friend_self, selfLabel]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;    if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotSelfPositioned) {&lt;br/&gt;        return trial.end_ios_friend_self // go to the end trial&lt;br/&gt;    } else {&lt;br/&gt;        return trial.position_ios_friend_self // otherwise keep positioning&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial end_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    // calculate distance between the placed dots&lt;br/&gt;    values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf1.xPx, shape.dotSelf1.yPx, shape.dotFriend1.xPx, shape.dotFriend1.yPx));&lt;br/&gt;    }&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend1, dotSelf1, debug, instructions_ios_friend_self, selfLabel]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend1&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf1&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;###################################################################################################################&lt;br/&gt;&lt;br/&gt;&amp;lt;block cIOS_Self_Friend_Stranger&amp;gt;&lt;br/&gt;/ trials = [1=startThreeDots]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial startThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;     shape.dotFriend.hPosition = 60%;&lt;br/&gt;     shape.dotFriend.vPosition = 40% ;&lt;br/&gt;     shape.dotSelf.hPosition = 50%;&lt;br/&gt;     shape.dotSelf.vPosition = 40%;&lt;br/&gt;     shape.dotStranger.hPosition = 40%;&lt;br/&gt;     shape.dotStranger.vPosition = 40%;&lt;br/&gt;     // dots have not been positioned yet&lt;br/&gt;     values.dotFriendPositioned = false;&lt;br/&gt;     values.dotSelfPositioned = false;&lt;br/&gt;     values.dotStrangerPositioned = false;&lt;br/&gt;     // reset distances from previous round&lt;br/&gt;     values.distanceSelfFriend = "n/a";&lt;br/&gt;     values.distanceSelfStranger = "n/a";&lt;br/&gt;     values.distanceFriendStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;    return trial.positionThreeDots&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial positionThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;    if (!values.dotFriendPositioned || !values.dotSelfPositioned || !values.dotStrangerPositioned) {&lt;br/&gt;        button.doneButton.skip = true; // don't show the done button&lt;br/&gt;    } else {&lt;br/&gt;        button.doneButton.skip = false; // otherwise show it&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;    // if a given dot has been positioned, set its position flag to true&lt;br/&gt;    if (this.lastDropSource == "dotFriend") {&lt;br/&gt;        values.dotFriendPositioned = true;&lt;br/&gt;    };&lt;br/&gt;    if (this.lastDropSource == "dotSelf") {&lt;br/&gt;    values.dotSelfPositioned = true;&lt;br/&gt;    };&lt;br/&gt;    if (this.lastDropSource == "dotStranger") {&lt;br/&gt;        values.dotStrangerPositioned = true;&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, doneButton, debug]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;    if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotFriendPositioned &amp;amp;&amp;amp; values.dotSelfPositioned &amp;amp;&amp;amp; values.dotStrangerPositioned) {&lt;br/&gt;        return trial.endThreeDots // go to the end trial&lt;br/&gt;    } else {&lt;br/&gt;        return trial.positionThreeDots // otherwise keep positioning&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial endThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    // calculate distance between the placed dots&lt;br/&gt;    values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotFriend.xPx, shape.dotFriend.yPx));&lt;br/&gt;    values.distanceSelfStranger = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;    values.distanceFriendStranger = display.getMMX(calculateDistance(shape.dotFriend.xPx, shape.dotFriend.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, debug]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape line&amp;gt;&lt;br/&gt;/ shape = rectangle&lt;br/&gt;/ size = (90%, 0.5%)&lt;br/&gt;/ color = black&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropTarget = true&lt;br/&gt;/ hPosition = 50%&lt;br/&gt;/ vPosition = 60%&lt;br/&gt;/ dropPosition = (anywhere, shape.line.vPosition)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotStranger&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = red&lt;br/&gt;/ erase = false&lt;br/&gt;/ hPosition = &lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (40%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (60%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (50%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button doneButton&amp;gt;&lt;br/&gt;/ caption = "Done"&lt;br/&gt;/ fontStyle = ("Arial", 4%, true)&lt;br/&gt;/ erase = false&lt;br/&gt;/ size = (25%, 10%)&lt;br/&gt;/ position = (50%, 90%)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text debug&amp;gt;&lt;br/&gt;/ items = ("&lt;br/&gt;Self Positioned = &amp;lt;%values.dotSelfPositioned%&amp;gt;&lt;br/&gt;Friend Positioned = &amp;lt;%values.dotFriendPositioned%&amp;gt;&lt;br/&gt;Stranger Positioned = &amp;lt;%values.dotStrangerPositioned%&amp;gt;&lt;br/&gt;&lt;br/&gt;Distance Self - Friend = &amp;lt;%values.distanceSelfFriend%&amp;gt;&lt;br/&gt;Distance Self - Stranger = &amp;lt;%values.distanceSelfStranger%&amp;gt;&lt;br/&gt;Distance Friend - Stranger = &amp;lt;%values.distanceFriendStranger%&amp;gt;")&lt;br/&gt;/ erase = false&lt;br/&gt;/ position = (50%,10%)&lt;br/&gt;&amp;lt;/text&amp;gt;[/code]</description><pubDate>Tue, 23 Jun 2026 21:03:23 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41900.aspx</link><description>&lt;blockquote data-id="41899" class="if-quote-wrapper" unselectable="on" data-guid="1782247788675" contenteditable="false" id="if_insertedNode_1782247787860"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41899" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41899" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41899" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Wasabi8888 - 6/23/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41899"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks for the clarification. I see the difference now.&lt;br/&gt;In that case, would you mind providing a simple example of how to update the label position after the dot has been dropped?&lt;br/&gt;&lt;br/&gt;Many thanks&lt;br/&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="41899"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;There ae no labels in your code.</description><pubDate>Tue, 23 Jun 2026 20:50:04 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41899.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;Thanks for the clarification. I see the difference now.&lt;br/&gt;In that case, would you mind providing a simple example of how to update the label position after the dot has been dropped?&lt;br/&gt;&lt;br/&gt;Many thanks&lt;br/&gt;&lt;br/&gt;</description><pubDate>Tue, 23 Jun 2026 20:45:52 GMT</pubDate><dc:creator>Wasabi8888</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41897.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;I noticed that in the Continuous Inclusion of Other in the Self (IOS) script, the labels move together with the circles when they are dragged. I’m not quite sure how this is implemented. Is it possible to use the same approach for the dots in the current task?&lt;br/&gt;&lt;br/&gt;Thanks&lt;br/&gt;</description><pubDate>Tue, 23 Jun 2026 19:48:16 GMT</pubDate><dc:creator>Wasabi8888</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41896.aspx</link><description>&lt;blockquote data-id="41895" class="if-quote-wrapper" unselectable="on" data-guid="1782234571398" contenteditable="false" id="if_insertedNode_1782234570639"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41895" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41895" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41895" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Wasabi8888 - 6/23/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41895"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi Dave,&lt;br/&gt;&lt;br/&gt;I would like the corresponding labels to be displayed above each dot: “self”, “&amp;lt;%values.FriendName%&amp;gt; friend”, and “&amp;lt;%values.StrangerName%&amp;gt; stranger”. Is it possible for the labels to move together with the dots when participants drag them?&lt;br/&gt;&lt;br/&gt;Here is my current code:&lt;br/&gt;[code]&amp;lt;defaults&amp;gt;&lt;br/&gt;/ canvasAspectRatio = (4,3)&lt;br/&gt;/ canvassize = (100%, 100%)&lt;br/&gt;/ canvasposition = (50%,50%)&lt;br/&gt;&amp;lt;/defaults&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;script&amp;gt;&lt;br/&gt;// function to calculate the euclidean distance between two points&lt;br/&gt;function calculateDistance(x1, y1, x2, y2) {&lt;br/&gt;    let deltaX = x2 - x1;&lt;br/&gt;    let deltaY = y2 - y1;&lt;br/&gt;    return Math.sqrt(deltaX ** 2 + deltaY ** 2)&lt;br/&gt;}&lt;br/&gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ dotFriendPositioned = false&lt;br/&gt;/ dotSelfPositioned = false&lt;br/&gt;/ dotStrangerPositioned = false&lt;br/&gt;&lt;br/&gt;/ distanceSelfFriend = "n/a"&lt;br/&gt;/ distanceSelfStranger = "n/a"&lt;br/&gt;/ distanceFriendStranger = "n/a"&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;expt perceived_distance&amp;gt;&lt;br/&gt;/ blocks = [&lt;br/&gt;    1 = cIOS_Friend_Self;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 = cIOS_Self_Friend_Stranger;&lt;br/&gt;    ]&lt;br/&gt;&amp;lt;/expt&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;###################################################################################################################&lt;br/&gt;&lt;br/&gt;&amp;lt;block cIOS_Friend_Self&amp;gt;&lt;br/&gt;/ trials = [1=start_ios_friend_self]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial start_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;     shape.dotFriend1.hPosition = 10%;&lt;br/&gt;     shape.dotFriend1.vPosition = 60% ;&lt;br/&gt;     shape.dotSelf1.hPosition = 90%;&lt;br/&gt;     shape.dotSelf1.vPosition = 60%;&lt;br/&gt;     // dots have not been positioned yet&lt;br/&gt;     values.dotSelfPositioned = false;&lt;br/&gt;     // reset distances from previous round&lt;br/&gt;     values.distanceSelfFriend = "n/a";&lt;br/&gt;     values.distanceSelfStranger = "n/a";&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.distanceFriendStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;    return trial.position_ios_friend_self&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text instructions_ios_friend_self&amp;gt;//edit instructions here&lt;br/&gt;/ items = ("Now we’ll ask you to move the circles in the same way to describe the relationship between Friend and You.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br/&gt;")&lt;br/&gt;/ fontStyle = ("Arial", 2.5%, false, false, false, false, 5, 1)&lt;br/&gt;/ position = (50%, 20%)&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial position_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;    if (!values.dotSelfPositioned) {&lt;br/&gt;        button.doneButton.skip = true; // don't show the done button&lt;br/&gt;    } else {&lt;br/&gt;        button.doneButton.skip = false; // otherwise show it&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;    // if a given dot has been positioned, set its position flag to true&lt;br/&gt;    if (this.lastDropSource == "dotSelf1") {&lt;br/&gt;    values.dotSelfPositioned = true;&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend1, dotSelf1, doneButton, debug, instructions_ios_friend_self]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;    if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotSelfPositioned) {&lt;br/&gt;        return trial.end_ios_friend_self // go to the end trial&lt;br/&gt;    } else {&lt;br/&gt;        return trial.position_ios_friend_self // otherwise keep positioning&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial end_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    // calculate distance between the placed dots&lt;br/&gt;    values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf1.xPx, shape.dotSelf1.yPx, shape.dotFriend1.xPx, shape.dotFriend1.yPx));&lt;br/&gt;    }&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend1, dotSelf1, debug, instructions_ios_friend_self]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend1&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf1&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;###################################################################################################################&lt;br/&gt;&lt;br/&gt;&amp;lt;block cIOS_Self_Friend_Stranger&amp;gt;&lt;br/&gt;/ trials = [1=startThreeDots]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial startThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;     shape.dotFriend.hPosition = 60%;&lt;br/&gt;     shape.dotFriend.vPosition = 40% ;&lt;br/&gt;     shape.dotSelf.hPosition = 50%;&lt;br/&gt;     shape.dotSelf.vPosition = 40%;&lt;br/&gt;     shape.dotStranger.hPosition = 40%;&lt;br/&gt;     shape.dotStranger.vPosition = 40%;&lt;br/&gt;     // dots have not been positioned yet&lt;br/&gt;     values.dotFriendPositioned = false;&lt;br/&gt;     values.dotSelfPositioned = false;&lt;br/&gt;     values.dotStrangerPositioned = false;&lt;br/&gt;     // reset distances from previous round&lt;br/&gt;     values.distanceSelfFriend = "n/a";&lt;br/&gt;     values.distanceSelfStranger = "n/a";&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.distanceFriendStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;    return trial.positionThreeDots&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial positionThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;    if (!values.dotFriendPositioned || !values.dotSelfPositioned || !values.dotStrangerPositioned) {&lt;br/&gt;        button.doneButton.skip = true; // don't show the done button&lt;br/&gt;    } else {&lt;br/&gt;        button.doneButton.skip = false; // otherwise show it&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;    // if a given dot has been positioned, set its position flag to true&lt;br/&gt;    if (this.lastDropSource == "dotFriend") {&lt;br/&gt;        values.dotFriendPositioned = true;&lt;br/&gt;    };&lt;br/&gt;    if (this.lastDropSource == "dotSelf") {&lt;br/&gt;    values.dotSelfPositioned = true;&lt;br/&gt;    };&lt;br/&gt;    if (this.lastDropSource == "dotStranger") {&lt;br/&gt;        values.dotStrangerPositioned = true;&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, doneButton, debug]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;    if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotFriendPositioned &amp;amp;&amp;amp; values.dotSelfPositioned &amp;amp;&amp;amp; values.dotStrangerPositioned) {&lt;br/&gt;        return trial.endThreeDots // go to the end trial&lt;br/&gt;    } else {&lt;br/&gt;        return trial.positionThreeDots // otherwise keep positioning&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial endThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    // calculate distance between the placed dots&lt;br/&gt;    values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotFriend.xPx, shape.dotFriend.yPx));&lt;br/&gt;    values.distanceSelfStranger = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.distanceFriendStranger = display.getMMX(calculateDistance(shape.dotFriend.xPx, shape.dotFriend.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, debug]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape line&amp;gt;&lt;br/&gt;/ shape = rectangle&lt;br/&gt;/ size = (90%, 0.5%)&lt;br/&gt;/ color = black&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropTarget = true&lt;br/&gt;/ hPosition = 50%&lt;br/&gt;/ vPosition = 60%&lt;br/&gt;/ dropPosition = (anywhere, shape.line.vPosition)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotStranger&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = red&lt;br/&gt;/ erase = false&lt;br/&gt;/ hPosition = &lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (40%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (60%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (50%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button doneButton&amp;gt;&lt;br/&gt;/ caption = "Done"&lt;br/&gt;/ fontStyle = ("Arial", 4%, true)&lt;br/&gt;/ erase = false&lt;br/&gt;/ size = (25%, 10%)&lt;br/&gt;/ position = (50%, 90%)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text debug&amp;gt;&lt;br/&gt;/ items = ("&lt;br/&gt;Self Positioned = &amp;lt;%values.dotSelfPositioned%&amp;gt;&lt;br/&gt;Friend Positioned = &amp;lt;%values.dotFriendPositioned%&amp;gt;&lt;br/&gt;Stranger Positioned = &amp;lt;%values.dotStrangerPositioned%&amp;gt;&lt;br/&gt;&lt;br/&gt;Distance Self - Friend = &amp;lt;%values.distanceSelfFriend%&amp;gt;&lt;br/&gt;Distance Self - Stranger = &amp;lt;%values.distanceSelfStranger%&amp;gt;&lt;br/&gt;Distance Friend - Stranger = &amp;lt;%values.distanceFriendStranger%&amp;gt;")&lt;br/&gt;/ erase = false&lt;br/&gt;/ position = (50%,10%)&lt;br/&gt;&amp;lt;/text&amp;gt;[/code]&lt;br/&gt;&lt;br/&gt;Thanks&lt;a class="if-quote-goto quote-link" href="#" data-id="41895"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;&amp;gt; Is it possible for the labels to move together with the dots when participants drag them?&lt;br/&gt;&lt;br/&gt;No.</description><pubDate>Tue, 23 Jun 2026 17:10:59 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41895.aspx</link><description>Hi Dave,&lt;br/&gt;&lt;br/&gt;I would like the corresponding labels to be displayed above each dot: “self”, “&amp;lt;%values.FriendName%&amp;gt; friend”, and “&amp;lt;%values.StrangerName%&amp;gt; stranger”. Is it possible for the labels to move together with the dots when participants drag them?&lt;br/&gt;&lt;br/&gt;Here is my current code:&lt;br/&gt;[code]&amp;lt;defaults&amp;gt;&lt;br/&gt;/ canvasAspectRatio = (4,3)&lt;br/&gt;/ canvassize = (100%, 100%)&lt;br/&gt;/ canvasposition = (50%,50%)&lt;br/&gt;&amp;lt;/defaults&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;script&amp;gt;&lt;br/&gt;// function to calculate the euclidean distance between two points&lt;br/&gt;function calculateDistance(x1, y1, x2, y2) {&lt;br/&gt;    let deltaX = x2 - x1;&lt;br/&gt;    let deltaY = y2 - y1;&lt;br/&gt;    return Math.sqrt(deltaX ** 2 + deltaY ** 2)&lt;br/&gt;}&lt;br/&gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ dotFriendPositioned = false&lt;br/&gt;/ dotSelfPositioned = false&lt;br/&gt;/ dotStrangerPositioned = false&lt;br/&gt;&lt;br/&gt;/ distanceSelfFriend = "n/a"&lt;br/&gt;/ distanceSelfStranger = "n/a"&lt;br/&gt;/ distanceFriendStranger = "n/a"&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;expt perceived_distance&amp;gt;&lt;br/&gt;/ blocks = [&lt;br/&gt;    1 = cIOS_Friend_Self;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 = cIOS_Self_Friend_Stranger;&lt;br/&gt;    ]&lt;br/&gt;&amp;lt;/expt&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;###################################################################################################################&lt;br/&gt;&lt;br/&gt;&amp;lt;block cIOS_Friend_Self&amp;gt;&lt;br/&gt;/ trials = [1=start_ios_friend_self]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial start_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;     shape.dotFriend1.hPosition = 10%;&lt;br/&gt;     shape.dotFriend1.vPosition = 60% ;&lt;br/&gt;     shape.dotSelf1.hPosition = 90%;&lt;br/&gt;     shape.dotSelf1.vPosition = 60%;&lt;br/&gt;     // dots have not been positioned yet&lt;br/&gt;     values.dotSelfPositioned = false;&lt;br/&gt;     // reset distances from previous round&lt;br/&gt;     values.distanceSelfFriend = "n/a";&lt;br/&gt;     values.distanceSelfStranger = "n/a";&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.distanceFriendStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;    return trial.position_ios_friend_self&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text instructions_ios_friend_self&amp;gt;//edit instructions here&lt;br/&gt;/ items = ("Now we’ll ask you to move the circles in the same way to describe the relationship between Friend and You.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br/&gt;")&lt;br/&gt;/ fontStyle = ("Arial", 2.5%, false, false, false, false, 5, 1)&lt;br/&gt;/ position = (50%, 20%)&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial position_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;    if (!values.dotSelfPositioned) {&lt;br/&gt;        button.doneButton.skip = true; // don't show the done button&lt;br/&gt;    } else {&lt;br/&gt;        button.doneButton.skip = false; // otherwise show it&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;    // if a given dot has been positioned, set its position flag to true&lt;br/&gt;    if (this.lastDropSource == "dotSelf1") {&lt;br/&gt;    values.dotSelfPositioned = true;&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend1, dotSelf1, doneButton, debug, instructions_ios_friend_self]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;    if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotSelfPositioned) {&lt;br/&gt;        return trial.end_ios_friend_self // go to the end trial&lt;br/&gt;    } else {&lt;br/&gt;        return trial.position_ios_friend_self // otherwise keep positioning&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial end_ios_friend_self&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    // calculate distance between the placed dots&lt;br/&gt;    values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf1.xPx, shape.dotSelf1.yPx, shape.dotFriend1.xPx, shape.dotFriend1.yPx));&lt;br/&gt;    }&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend1, dotSelf1, debug, instructions_ios_friend_self]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend1&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf1&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;###################################################################################################################&lt;br/&gt;&lt;br/&gt;&amp;lt;block cIOS_Self_Friend_Stranger&amp;gt;&lt;br/&gt;/ trials = [1=startThreeDots]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial startThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;     shape.dotFriend.hPosition = 60%;&lt;br/&gt;     shape.dotFriend.vPosition = 40% ;&lt;br/&gt;     shape.dotSelf.hPosition = 50%;&lt;br/&gt;     shape.dotSelf.vPosition = 40%;&lt;br/&gt;     shape.dotStranger.hPosition = 40%;&lt;br/&gt;     shape.dotStranger.vPosition = 40%;&lt;br/&gt;     // dots have not been positioned yet&lt;br/&gt;     values.dotFriendPositioned = false;&lt;br/&gt;     values.dotSelfPositioned = false;&lt;br/&gt;     values.dotStrangerPositioned = false;&lt;br/&gt;     // reset distances from previous round&lt;br/&gt;     values.distanceSelfFriend = "n/a";&lt;br/&gt;     values.distanceSelfStranger = "n/a";&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.distanceFriendStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;    return trial.positionThreeDots&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial positionThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;    if (!values.dotFriendPositioned || !values.dotSelfPositioned || !values.dotStrangerPositioned) {&lt;br/&gt;        button.doneButton.skip = true; // don't show the done button&lt;br/&gt;    } else {&lt;br/&gt;        button.doneButton.skip = false; // otherwise show it&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;    // if a given dot has been positioned, set its position flag to true&lt;br/&gt;    if (this.lastDropSource == "dotFriend") {&lt;br/&gt;        values.dotFriendPositioned = true;&lt;br/&gt;    };&lt;br/&gt;    if (this.lastDropSource == "dotSelf") {&lt;br/&gt;    values.dotSelfPositioned = true;&lt;br/&gt;    };&lt;br/&gt;    if (this.lastDropSource == "dotStranger") {&lt;br/&gt;        values.dotStrangerPositioned = true;&lt;br/&gt;    };&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, doneButton, debug]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;    if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotFriendPositioned &amp;amp;&amp;amp; values.dotSelfPositioned &amp;amp;&amp;amp; values.dotStrangerPositioned) {&lt;br/&gt;        return trial.endThreeDots // go to the end trial&lt;br/&gt;    } else {&lt;br/&gt;        return trial.positionThreeDots // otherwise keep positioning&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial endThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    // calculate distance between the placed dots&lt;br/&gt;    values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotFriend.xPx, shape.dotFriend.yPx));&lt;br/&gt;    values.distanceSelfStranger = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.distanceFriendStranger = display.getMMX(calculateDistance(shape.dotFriend.xPx, shape.dotFriend.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, debug]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape line&amp;gt;&lt;br/&gt;/ shape = rectangle&lt;br/&gt;/ size = (90%, 0.5%)&lt;br/&gt;/ color = black&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropTarget = true&lt;br/&gt;/ hPosition = 50%&lt;br/&gt;/ vPosition = 60%&lt;br/&gt;/ dropPosition = (anywhere, shape.line.vPosition)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotStranger&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = red&lt;br/&gt;/ erase = false&lt;br/&gt;/ hPosition = &lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (40%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (60%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.005*display.canvasHeight), display.getPixelsY(0.005*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (50%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button doneButton&amp;gt;&lt;br/&gt;/ caption = "Done"&lt;br/&gt;/ fontStyle = ("Arial", 4%, true)&lt;br/&gt;/ erase = false&lt;br/&gt;/ size = (25%, 10%)&lt;br/&gt;/ position = (50%, 90%)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text debug&amp;gt;&lt;br/&gt;/ items = ("&lt;br/&gt;Self Positioned = &amp;lt;%values.dotSelfPositioned%&amp;gt;&lt;br/&gt;Friend Positioned = &amp;lt;%values.dotFriendPositioned%&amp;gt;&lt;br/&gt;Stranger Positioned = &amp;lt;%values.dotStrangerPositioned%&amp;gt;&lt;br/&gt;&lt;br/&gt;Distance Self - Friend = &amp;lt;%values.distanceSelfFriend%&amp;gt;&lt;br/&gt;Distance Self - Stranger = &amp;lt;%values.distanceSelfStranger%&amp;gt;&lt;br/&gt;Distance Friend - Stranger = &amp;lt;%values.distanceFriendStranger%&amp;gt;")&lt;br/&gt;/ erase = false&lt;br/&gt;/ position = (50%,10%)&lt;br/&gt;&amp;lt;/text&amp;gt;[/code]&lt;br/&gt;&lt;br/&gt;Thanks</description><pubDate>Tue, 23 Jun 2026 17:06:33 GMT</pubDate><dc:creator>Wasabi8888</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41844.aspx</link><description>&lt;blockquote data-id="41843" class="if-quote-wrapper" unselectable="on" data-guid="1778076199484" contenteditable="false" id="if_insertedNode_1778076198118"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41843" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41843" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41843" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 5/6/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41843"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="41842" class="if-quote-wrapper" unselectable="on" data-guid="1778076199484" contenteditable="false" id="if_insertedNode_1778029684209"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41842" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41842" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41842" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Wasabi8888 - 5/5/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41842"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi,&lt;br/&gt;&lt;br/&gt;I adapted the Continuous Inclusion of Other in the Self (Continuous IOS) script from the Inquisit test library. However, instead of measuring circle overlap, I would like to measure perceived social distance using draggable dots on a continuous line scale (similar to a slider).&lt;br/&gt;&lt;br/&gt;Specifically:&lt;br/&gt;* In the first part, participants would drag a dot on the right side (representing one identity) along a line to indicate the perceived distance between two identities (measured in millimetres or pixels), while the dot on the left side remains fixed.&lt;br/&gt;* In the second part, participants would drag three dots (e.g., self, friend, stranger) on the same line to represent the relative distances between identities.&lt;br/&gt;&lt;br/&gt;Does anyone know how this could be implemented in Inquisit?&lt;br/&gt;Any suggestions would be greatly appreciated!&lt;a class="if-quote-goto quote-link" href="#" data-id="41842"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;There are plenty of drag and drop examples available in the library as well as in this forum, and measuring distance is trivial and has also been discussed here many times (e.g. &lt;a href="https://forums.millisecond.com/Topic22122.aspx"&gt;&lt;a href="https://forums.millisecond.com/Topic22122.aspx"&gt;https://forums.millisecond.com/Topic22122.aspx&lt;/a&gt;&lt;/a&gt; , &lt;a href="https://forums.millisecond.com/Topic33516.aspx,"&gt;&lt;a href="https://forums.millisecond.com/Topic33516.aspx,"&gt;https://forums.millisecond.com/Topic33516.aspx,&lt;/a&gt;&lt;/a&gt; &lt;a href="https://forums.millisecond.com/Topic32322.aspx"&gt;&lt;a href="https://forums.millisecond.com/Topic32322.aspx"&gt;https://forums.millisecond.com/Topic32322.aspx&lt;/a&gt;&lt;/a&gt; ).&lt;br/&gt;&lt;br/&gt;So, what part are you struggling with concretely? Maybe start with working up a small demo for part 1 ("In the first part, participants would drag a dot on the right side (representing one identity) along a line to indicate the perceived distance between two identities (measured in millimetres or pixels), while the dot on the left side remains fixed.") and once you have that running, expand from there.&lt;a class="if-quote-goto quote-link" href="#" data-id="41843"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;A simple example: Place three dots anywhere on the line, calculate the distances when done.&lt;br/&gt;&lt;br/&gt;[code]&amp;lt;defaults&amp;gt;&lt;br/&gt;/ canvasAspectRatio = (4,3)&lt;br/&gt;&amp;lt;/defaults&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;script&amp;gt;&lt;br/&gt;// function to calculate the euclidean distance between two points&lt;br/&gt;function calculateDistance(x1, y1, x2, y2) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let deltaX = x2 - x1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let deltaY = y2 - y1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return Math.sqrt(deltaX ** 2 + deltaY ** 2)&lt;br/&gt;}&lt;br/&gt;&amp;lt;/script&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ dotFriendPositioned = false&lt;br/&gt;/ dotSelfPositioned = false&lt;br/&gt;/ dotStrangerPositioned = false&lt;br/&gt;&lt;br/&gt;/ distanceSelfFriend = "n/a"&lt;br/&gt;/ distanceSelfStranger = "n/a"&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;block myBlock&amp;gt;&lt;br/&gt;/ trials = [1=startThreeDots]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial startThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// reset dots to their starting positions&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shape.dotFriend.hPosition = 60%;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shape.dotFriend.vPosition = 40% ;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shape.dotSelf.hPosition = 50%;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shape.dotSelf.vPosition = 40%;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shape.dotStranger.hPosition = 40%;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shape.dotStranger.vPosition = 40%;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // dots have not been positioned yet&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.dotFriendPositioned = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.dotSelfPositioned = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.dotStrangerPositioned = false;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // reset distances from previous round&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.distanceSelfFriend = "n/a";&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.distanceSelfStranger = "n/a";&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen]&lt;br/&gt;/ trialDuration = 0&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (noResponse)&lt;br/&gt;/ branch = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.positionThreeDots&lt;br/&gt;}&lt;br/&gt;/ recordData = false&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;//&lt;br/&gt;&amp;lt;trial positionThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;// if any of the dots hasn't been positioned yet&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!values.dotFriendPositioned || !values.dotSelfPositioned || !values.dotStrangerPositioned) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;button.doneButton.skip = true; // don't show the done button&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;button.doneButton.skip = false; // otherwise show it&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;}&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// if a given dot has been positioned, set its position flag to true&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this.lastDropSource == "dotFriend") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.dotFriendPositioned = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this.lastDropSource == "dotSelf") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.dotSelfPositioned = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this.lastDropSource == "dotStranger") {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.dotStrangerPositioned = true;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, doneButton, debug]&lt;br/&gt;/ inputDevice = dragDrop&lt;br/&gt;/ validResponse = (line, doneButton)&lt;br/&gt;/ recordData = false&lt;br/&gt;/ branch = {&lt;br/&gt;// if participants says they're done positioning&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this.response == "doneButton" &amp;amp;&amp;amp; values.dotFriendPositioned &amp;amp;&amp;amp; values.dotSelfPositioned &amp;amp;&amp;amp; values.dotStrangerPositioned) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.endThreeDots // go to the end trial&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.positionThreeDots // otherwise keep positioning&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial endThreeDots&amp;gt;&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// calculate distance between the placed dots&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.distanceSelfFriend = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotFriend.xPx, shape.dotFriend.yPx));&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.distanceSelfStranger = display.getMMX(calculateDistance(shape.dotSelf.xPx, shape.dotSelf.yPx, shape.dotStranger.xPx, shape.dotStranger.yPx));&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen, line, dotFriend, dotSelf, dotStranger, debug]&lt;br/&gt;/ inputDevice = mouse&lt;br/&gt;/ validResponse = (lButtonDown)&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape line&amp;gt;&lt;br/&gt;/ shape = rectangle&lt;br/&gt;/ size = (90%, 2%)&lt;br/&gt;/ color = black&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropTarget = true&lt;br/&gt;/ hPosition = 50%&lt;br/&gt;/ vPosition = 60%&lt;br/&gt;/ dropPosition = (anywhere, shape.line.vPosition)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotStranger&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.01*display.canvasHeight), display.getPixelsY(0.01*display.canvasHeight))&lt;br/&gt;/ color = red&lt;br/&gt;/ erase = false&lt;br/&gt;/ hPosition = &lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (40%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotFriend&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.01*display.canvasHeight), display.getPixelsY(0.01*display.canvasHeight))&lt;br/&gt;/ color = green&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (60%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;shape dotSelf&amp;gt;&lt;br/&gt;/ shape = circle&lt;br/&gt;/ size = (display.getPixelsY(0.01*display.canvasHeight), display.getPixelsY(0.01*display.canvasHeight))&lt;br/&gt;/ color = blue&lt;br/&gt;/ erase = false&lt;br/&gt;/ dropSource = true&lt;br/&gt;/ position = (50%, 40%)&lt;br/&gt;&amp;lt;/shape&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;button doneButton&amp;gt;&lt;br/&gt;/ caption = "Done"&lt;br/&gt;/ fontStyle = ("Arial", 4%, true)&lt;br/&gt;/ erase = false&lt;br/&gt;/ size = (25%, 10%)&lt;br/&gt;/ position = (50%, 90%)&lt;br/&gt;&amp;lt;/button&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text debug&amp;gt;&lt;br/&gt;/ items = ("&lt;br/&gt;Self Positioned = &amp;lt;%values.dotSelfPositioned%&amp;gt;&lt;br/&gt;Friend Positioned = &amp;lt;%values.dotFriendPositioned%&amp;gt;&lt;br/&gt;Stranger Positioned = &amp;lt;%values.dotStrangerPositioned%&amp;gt;&lt;br/&gt;&lt;br/&gt;Distance Self - Friend = &amp;lt;%values.distanceSelfFriend%&amp;gt;&lt;br/&gt;Distance Self - Stranger = &amp;lt;%values.distanceSelfStranger%&amp;gt;")&lt;br/&gt;/ erase = false&lt;br/&gt;/ position = (50%,10%)&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;[/code]&lt;br/&gt;</description><pubDate>Wed, 06 May 2026 14:12:01 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: Modifying Continuous IOS in Inquisit: draggable dots instead of circle overlap</title><link>https://forums.millisecond.com/Topic41843.aspx</link><description>&lt;blockquote data-id="41842" class="if-quote-wrapper" unselectable="on" data-guid="1778029684999" contenteditable="false" id="if_insertedNode_1778029684209"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41842" title="Move Cursor Below" contenteditable="false"&gt;&lt;span unselectable="on"&gt;+&lt;/span&gt;&lt;/a&gt;&lt;a class="quote-delete" unselectable="on" style="display: none;" href="#" data-id="41842" title="Delete Quote" contenteditable="false"&gt;&lt;span unselectable="on"&gt;x&lt;/span&gt;&lt;/a&gt;&lt;span unselectable="on" class="quote-markup"&gt;[quote]&lt;/span&gt;&lt;div unselectable="on" class="if-quote-header" contenteditable="false"&gt;&lt;div unselectable="on" class="if-quote-toggle-wrapper"&gt;&lt;a class="if-quote-toggle quote-link" href="#" data-id="41842" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Wasabi8888 - 5/5/2026&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41842"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hi,&lt;br/&gt;&lt;br/&gt;I adapted the Continuous Inclusion of Other in the Self (Continuous IOS) script from the Inquisit test library. However, instead of measuring circle overlap, I would like to measure perceived social distance using draggable dots on a continuous line scale (similar to a slider).&lt;br/&gt;&lt;br/&gt;Specifically:&lt;br/&gt;* In the first part, participants would drag a dot on the right side (representing one identity) along a line to indicate the perceived distance between two identities (measured in millimetres or pixels), while the dot on the left side remains fixed.&lt;br/&gt;* In the second part, participants would drag three dots (e.g., self, friend, stranger) on the same line to represent the relative distances between identities.&lt;br/&gt;&lt;br/&gt;Does anyone know how this could be implemented in Inquisit?&lt;br/&gt;Any suggestions would be greatly appreciated!&lt;a class="if-quote-goto quote-link" href="#" data-id="41842"&gt;&lt;span class="goto"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[/quote]&lt;/span&gt;&lt;/blockquote&gt;&lt;br/&gt;There are plenty of drag and drop examples available in the library as well as in this forum, and measuring distance is trivial and has also been discussed here many times (e.g. &lt;a href="https://forums.millisecond.com/Topic22122.aspx"&gt;&lt;a href="https://forums.millisecond.com/Topic22122.aspx"&gt;https://forums.millisecond.com/Topic22122.aspx&lt;/a&gt;&lt;/a&gt; , &lt;a href="https://forums.millisecond.com/Topic33516.aspx,"&gt;&lt;a href="https://forums.millisecond.com/Topic33516.aspx,"&gt;https://forums.millisecond.com/Topic33516.aspx,&lt;/a&gt;&lt;/a&gt; &lt;a href="https://forums.millisecond.com/Topic32322.aspx"&gt;&lt;a href="https://forums.millisecond.com/Topic32322.aspx"&gt;https://forums.millisecond.com/Topic32322.aspx&lt;/a&gt;&lt;/a&gt; ).&lt;br/&gt;&lt;br/&gt;So, what part are you struggling with concretely? Maybe start with working up a small demo for part 1 ("In the first part, participants would drag a dot on the right side (representing one identity) along a line to indicate the perceived distance between two identities (measured in millimetres or pixels), while the dot on the left side remains fixed.") and once you have that running, expand from there.</description><pubDate>Wed, 06 May 2026 01:22:57 GMT</pubDate><dc:creator>Dave</dc:creator></item></channel></rss>