﻿<?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  » changing picture.erase condition dynamically; reduce flicker between trials</title><generator>InstantForum 2017-1 Final</generator><description>Millisecond Forums</description><link>https://forums.millisecond.com/</link><webMaster>Millisecond Forums</webMaster><lastBuildDate>Wed, 11 Mar 2026 22:10:55 GMT</lastBuildDate><ttl>20</ttl><item><title>changing picture.erase condition dynamically; reduce flicker between trials</title><link>https://forums.millisecond.com/Topic41466.aspx</link><description>Hello!&lt;br/&gt;&lt;br/&gt;I’m building a visual task where multiple objects fall from the top of the screen, and a player-controlled avatar can move left or right to collect them. Currently, I am dynamically changing the position of each object for each trial as it falls down, rather than using the animation attribute on the picture element to pre-define the falling paths. Because of this, I am experiencing "flickering" as each trial refreshes and as the objects "move" to their new position.&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br/&gt;To reduce screen flicker between trials, I’ve been using erase = false for the stimuli. However, I also see there are duplicates of the images that get created when the object needs to "move." Ideally, I want to have the stimuli to not flicker when at rest, and set erase=true and move to its new position when its supposed to without duplicates.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;I have attached the files with the script titled "picture trial.iqjs" . Please press 1 or 2 on the keyboard to move the avatar left or right.&lt;br/&gt;&lt;br/&gt;Thank you!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;</description><pubDate>Fri, 01 Aug 2025 14:40:46 GMT</pubDate><dc:creator>jmaram</dc:creator></item><item><title>RE: changing picture.erase condition dynamically; reduce flicker between trials</title><link>https://forums.millisecond.com/Topic41488.aspx</link><description>&lt;br/&gt;Thank you so much Dave!</description><pubDate>Fri, 01 Aug 2025 14:40:46 GMT</pubDate><dc:creator>jmaram</dc:creator></item><item><title>RE: changing picture.erase condition dynamically; reduce flicker between trials</title><link>https://forums.millisecond.com/Topic41468.aspx</link><description>&lt;blockquote data-id="41467" class="if-quote-wrapper" unselectable="on" data-guid="1754000598868" contenteditable="false" id="if_insertedNode_1754000598425"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41467" 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="41467" 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="41467" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;Dave - 7/31/2025&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41467"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;&lt;blockquote data-id="41466" class="if-quote-wrapper" unselectable="on" data-guid="1754000598868" contenteditable="false" id="if_insertedNode_1753998914178"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41466" 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="41466" 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="41466" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;jmaram - 7/31/2025&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41466"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hello!&lt;br/&gt;&lt;br/&gt;I’m building a visual task where multiple objects fall from the top of the screen, and a player-controlled avatar can move left or right to collect them. Currently, I am dynamically changing the position of each object for each trial as it falls down, rather than using the animation attribute on the picture element to pre-define the falling paths. Because of this, I am experiencing "flickering" as each trial refreshes and as the objects "move" to their new position.&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br/&gt;To reduce screen flicker between trials, I’ve been using erase = false for the stimuli. However, I also see there are duplicates of the images that get created when the object needs to "move." Ideally, I want to have the stimuli to not flicker when at rest, and set erase=true and move to its new position when its supposed to without duplicates.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;I have attached the files with the script titled "picture trial.iqjs" . Please press 1 or 2 on the keyboard to move the avatar left or right.&lt;br/&gt;&lt;br/&gt;Thank you!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="41466"&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;You need to set /erase=false for all stimuli and additionally use clearScreen as the first thing in /stimulusFrames to clear the screen of remnants from the preceding trial.&lt;a class="if-quote-goto quote-link" href="#" data-id="41467"&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;Revised to not flcker.&lt;br/&gt;&lt;br/&gt;[code]&lt;br/&gt;_______________________________________________________________________________________&lt;br/&gt;output file&lt;br/&gt;&amp;lt;data&amp;gt;&lt;br/&gt;/ columns = (date, time, subject, group, blockcode, blocknum, trialcode,trialNum,latency, script.elapsedTime, response, values.trial_type,values.stimuli_x, values.stimuli_y, values.stimulus_direction,values.avatar_x, values.avatar_direction,values.berries_collected, &lt;br/&gt;values.berry_x, values.berry_y&lt;br/&gt;//values.berry2_x, values.berry2_y&lt;br/&gt;)&lt;br/&gt;&amp;lt;/data&amp;gt;&lt;br/&gt;______________________________________________________________________________________&lt;br/&gt;&amp;lt;defaults&amp;gt;&lt;br/&gt;/ canvasaspectratio = (4,3)&lt;br/&gt;/ minimumversion = "6.5.2.0"&lt;br/&gt;/ fontstyle = ("Hei", 3%, false, false, false, false, 5, 1)&lt;br/&gt;/ txbgcolor = white&lt;br/&gt;/ txcolor = black&lt;br/&gt;/ screencolor = white&lt;br/&gt;&amp;lt;/defaults&amp;gt;&lt;br/&gt;_______________________________________________________________________________________&lt;br/&gt;&lt;br/&gt;&amp;lt;block RunExp&amp;gt;&lt;br/&gt;/ onBlockBegin = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.berries_collected = 0; &lt;br/&gt;}&lt;br/&gt;/ trials = [1-9=InitialTrial;]&lt;br/&gt;&amp;lt;/block&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;values&amp;gt;&lt;br/&gt;/ trial_type = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 1 = predator. 2 = neutral&lt;br/&gt;/ avatar_x = 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//50%&lt;br/&gt;/ avatar_step = 1&lt;br/&gt;/ stimuli_x = 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//50%&lt;br/&gt;/ stimuli_step = 0&lt;br/&gt;/ stimuli_y = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//10%&lt;br/&gt;/ stimuli_speed = 2&lt;br/&gt;/ avatar_direction = 0  // -1 = left, 1 = right&lt;br/&gt;/ stimulus_direction = 0&lt;br/&gt;/ random_direction_probability = 50&lt;br/&gt;&lt;br/&gt;// berries&lt;br/&gt;/ num_berries = 3  // randomized each block&lt;br/&gt;&lt;br/&gt;/ berry_x = 1&lt;br/&gt;/ berry_y = 1&lt;br/&gt;/ berry1_speed = 1&lt;br/&gt;&lt;br/&gt;/ berry2_x = 1&lt;br/&gt;/ berry2_y = 1&lt;br/&gt;/ berry2_speed = 1&lt;br/&gt;&lt;br/&gt;/ berry3_x = 1&lt;br/&gt;/ berry3_y = 1&lt;br/&gt;/ berry3_speed = 1&lt;br/&gt;&lt;br/&gt;/ berries_collected = 0&lt;br/&gt;&lt;br/&gt;/ frame_counter = 0&lt;br/&gt;&amp;lt;/values&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;expressions&amp;gt;&lt;br/&gt;/ berry_start_y = parameters.berry_radius&lt;br/&gt;/ berry_end_y = 100 - parameters.berry_radius&lt;br/&gt;&amp;lt;/expressions&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;parameters&amp;gt;&lt;br/&gt;/ berry_radius = 4&lt;br/&gt;/ totalfallduration = 2000&lt;br/&gt;/ berrystepduration = 500&lt;br/&gt;&amp;lt;/parameters&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;list avatar_xposition&amp;gt;&lt;br/&gt;/ items = (0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%)&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&amp;lt;list stimuli_xposition&amp;gt;&lt;br/&gt;/ items = (0%,10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%)&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&amp;lt;list stimuli_yposition&amp;gt;&lt;br/&gt;/ items = (&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0%,2.5%,5%,7.5%,10%,12.5%,15%,17.5%,20%,22.5%,25%,27.5%,30%,32.5%,35%,37.5%,40%,42.5%,45%,47.5%,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;50%,52.5%,55%,57.5%,60%,62.5%,65%,67.5%,70%,72.5%,75%,77.5%,80%,82.5%,85%,87.5%,90%,92.5%,95%,97.5%)&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&amp;lt;list berry_xposition&amp;gt;&lt;br/&gt;/ items = (0%,10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90%)&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&amp;lt;list berry_yposition&amp;gt;&lt;br/&gt;/ items = (&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0%,2.5%,5%,7.5%,10%,12.5%,15%,17.5%,20%,22.5%,25%,27.5%,30%,32.5%,35%,37.5%,40%,42.5%,45%,47.5%,&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;50%,52.5%,55%,57.5%,60%,62.5%,65%,67.5%,70%,72.5%,75%,77.5%,80%,82.5%,85%,87.5%,90%,92.5%,95%,97.5%)&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;list trial_type&amp;gt;&lt;br/&gt;/ items = (0,1)&lt;br/&gt;/ itemProbabilities = (0.6,0.4)&lt;br/&gt;/ poolSize = 100 // HOW MANY TRIALS ?&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;// set up all pictures for types of trials&lt;br/&gt;&lt;br/&gt;&amp;lt;picture avatar&amp;gt;&lt;br/&gt;/ items = ("Beaver.png")&lt;br/&gt;/ position = (list.avatar_xposition.item(values.avatar_x), 93%)&lt;br/&gt;/ size = (5%,5%)&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/picture&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;picture berry_tree&amp;gt;&lt;br/&gt;/ items = ("Berry_Tree.png")&lt;br/&gt;/ position = (50%, 10%)&lt;br/&gt;/ size = (100%,50%)&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/picture&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;picture berry&amp;gt;&lt;br/&gt;/ items = ("berry.png")&lt;br/&gt;/ position = (list.berry_xposition.item(values.berry_x), list.berry_yposition.item(values.berry_y))&lt;br/&gt;/ size = (4%, 4%)&lt;br/&gt;/ animation = path(50, 1,&lt;br/&gt;    list.berry_xposition.item(values.berry_x), list.berry_yposition.item(values.berry_y),&lt;br/&gt;    list.berry_xposition.item(values.berry_x), list.berry_yposition.item(values.berry_y + values.berry1_speed))&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/picture&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;picture berry2&amp;gt;&lt;br/&gt;/ items = ("berry.png")&lt;br/&gt;/ position = (list.berry_xposition.item(values.berry2_x), list.berry_yposition.item(values.berry2_y))&lt;br/&gt;/ size = (4%, 4%)&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/picture&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;picture berry3&amp;gt;&lt;br/&gt;/ items = ("berry.png")&lt;br/&gt;/ position = (list.berry_xposition.item(values.berry3_x), list.berry_yposition.item(values.berry3_y))&lt;br/&gt;/ size = (4%, 4%)&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/picture&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text total_score&amp;gt;&lt;br/&gt;/ items = ("Berries collected: &amp;lt;% values.berries_collected %&amp;gt;")&lt;br/&gt;/ position = (10%, 10%)&lt;br/&gt;/ txcolor = black&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;picture stimuli&amp;gt;&lt;br/&gt;/ items = (&lt;br/&gt;"threat.png",&lt;br/&gt;"neutral_char.png")&lt;br/&gt;/ position = (list.stimuli_xposition.item(values.stimuli_x), list.stimuli_yposition.item(values.stimuli_y))&lt;br/&gt;/ size = (5%,5%)&lt;br/&gt;/ select = values.trial_type&lt;br/&gt;/ erase = false&lt;br/&gt;// animation = path(50, 1,&lt;br/&gt;//    list.stimuli_xposition.item(values.stimuli_x), list.stimuli_yposition.item(values.stimuli_y),&lt;br/&gt;//   list.stimuli_xposition.item(values.stimuli_x + values.stimuli_step), list.stimuli_yposition.item(values.stimuli_y + values.stimuli_speed))&lt;br/&gt;&amp;lt;/picture&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;list signal_duration&amp;gt;&lt;br/&gt;/ items = (2000, 3000, 4000)&lt;br/&gt;/ selectionmode = random&lt;br/&gt;&amp;lt;/list&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text signal_message&amp;gt;&lt;br/&gt;/ items = ("Predator approaching!","Character arriving!")&lt;br/&gt;/ fontStyle = ("Hei", 4%, false, false, false, false, 5, 0)&lt;br/&gt;/ position = (50%, 50%)&lt;br/&gt;/ txcolor = black&lt;br/&gt;/ select = values.trial_type&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial InitialTrial&amp;gt;&lt;br/&gt;/ timeout = 1000&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;    values.num_berries = round(rand(1, 3));&lt;br/&gt;    &lt;br/&gt;    values.avatar_x = round(rand(0,8));&lt;br/&gt;    values.avatar_direction = 0;&lt;br/&gt;&lt;br/&gt;    values.trial_type = list.trial_type.nextValue; // 0 = predator, 1 = neutral&lt;br/&gt;    values.stimuli_x = round(rand(0,8));&lt;br/&gt;    values.stimuli_y = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO: set the value of where the y position is for predator (distal or near post-encounter)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_speed = 3;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO change speed ?&lt;br/&gt;&lt;br/&gt;    values.berry_x = round(rand(1, 8));&lt;br/&gt;    values.berry_y = 1;&lt;br/&gt;    values.berry1_speed = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO possibly make it faster later&lt;br/&gt;&lt;br/&gt;}&lt;br/&gt;/ stimulusFrames = [1=clearScreen] // clear the screen while you're at it&lt;br/&gt;/ branch = {&lt;br/&gt;return trial.Signal;&lt;br/&gt;}&lt;br/&gt;/ validresponse = ()&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ responseinterrupt = no // "no" is not a setting that exists&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text debug_trial_type&amp;gt;&lt;br/&gt;/ items = ("Trial type: &amp;lt;% values.trial_type %&amp;gt;")&lt;br/&gt;/ position = (10%, 10%)&lt;br/&gt;/ fontstyle = ("Arial", 2%, false, false, false, false, 5, 1)&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial Signal&amp;gt;&lt;br/&gt;/ onTrialBegin = {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.stimuli.erase = true; // NOT NEEDED&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.avatar.erase = true; //NOT NEEDED&lt;br/&gt;}&lt;br/&gt;/ stimulustimes = [0 = clearScreen, signal_message]&lt;br/&gt;/ timeout = 2000 // MAKE IT A DISTRIBUTION&lt;br/&gt;/ branch = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return trial.Play;&lt;br/&gt;}&lt;br/&gt;/ validresponse = ()&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ responseinterrupt = no // "no" is not a setting that exists&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text debug_y&amp;gt;&lt;br/&gt;/ items = ("Stimuli Y: &amp;lt;% values.stimuli_y %&amp;gt;")&lt;br/&gt;/ position = (10%, 5%)&lt;br/&gt;/ fontstyle = ("Arial", 2%, false, false, false, false, 5, 1)&lt;br/&gt;/ erase = false&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial Play&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// name it post_encounter?&lt;br/&gt;/ timeout = 500&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO: randomize how long the trial lasts&lt;br/&gt;/ onTrialBegin = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.avatar_direction = 0;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimulus_direction = 0;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.frame_counter += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_step = 0;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;/ stimulusFrames = [1=clearScreen,avatar,stimuli,total_score,berry;] // Clearing the screen is the first order of business&lt;br/&gt;&lt;br/&gt;/ validresponse = (2,3)&lt;br/&gt;/ inputdevice = keyboard&lt;br/&gt;/ responseInterrupt = immediate&lt;br/&gt;&lt;br/&gt;/ onTrialEnd = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// RECODE USING EXPRESSIONS . make an expression so that avatar_x_new is calculated, and the trial starts with that instead.&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// recode with old location, current_loc, new_loc ?&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// move avatar&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.Play.response == 2 &amp;amp;&amp;amp; values.avatar_x &amp;gt; 0) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.avatar_x -= 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.avatar_direction = -1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.avatar.erase = true; // NOT NEEDED&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (trial.Play.response == 3 &amp;amp;&amp;amp; values.avatar_x &amp;lt; 9) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.avatar_x += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.avatar_direction = 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.avatar.erase = true; // NOT NEEDED&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.Play.response != 0 || values.frame_counter % 5 == 0) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// only if response is made or if counter is even &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.trial_type == 0) {  // predator moves towards avatar&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.stimuli_x &amp;lt; values.avatar_x &amp;amp;&amp;amp; values.stimuli_x &amp;lt; 9) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_step=1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (values.stimuli_x &amp;gt; values.avatar_x &amp;amp;&amp;amp; values.stimuli_x &amp;gt; 0) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_step=-1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_x += values.stimuli_step;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (values.trial_type == 1) {  // neutral character moves randomly&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (round(rand(1, 2)) == 1 &amp;amp;&amp;amp; values.stimuli_x &amp;gt; 0) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_step=-1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else if (values.stimuli_x &amp;lt; 9) {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_step=1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.stimuli_x += values.stimuli_step;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (trial.Play.response == 0){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// to help stop flickering ?&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.avatar.erase = false; // NOT NEEDED&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.stimuli.erase = false; &amp;lt;--- HELP&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// predator/character move downward &lt;br/&gt;    if (values.stimuli_y + values.stimuli_speed &amp;lt; 39) {&lt;br/&gt;&lt;br/&gt;        if (trial.Play.response != 0 || values.frame_counter % 5 == 0) {&lt;br/&gt;                values.stimuli_y += values.stimuli_speed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//picture.stimuli.erase = true; // NOT NEEDED&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else { // stimulus reached bottom&lt;br/&gt;        values.stimuli_y = 39;&lt;br/&gt;        // if (values.trial_type == 0 &amp;amp;&amp;amp; values.stimuli_x == values.avatar_x)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO: Set color for predator if caught, grey if neutral&lt;br/&gt;    }&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// falling berry&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.berry_y + values.berry1_speed &amp;lt; 39) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.berry_y += values.berry1_speed;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// if berry reaches bottom of screen&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.berry_x == values.avatar_x){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// if berry is right above avatar&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.berries_collected += 1;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.berry_y = 0; // either reset to top or later change to multiple berries&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;values.berry_x = round(rand(1, 9)); &lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;/ branch = {&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (values.stimuli_y == 39) {return trial.Indication;}&lt;br/&gt;    else return trial.Play;&lt;br/&gt;}&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;trial Indication&amp;gt;&lt;br/&gt;/ timeout = 3000&lt;br/&gt;/ stimulusTimes = [100 = indication;]&lt;br/&gt;&amp;lt;/trial&amp;gt;&lt;br/&gt;&lt;br/&gt;&amp;lt;text indication&amp;gt;&lt;br/&gt;/ items = ("Indication period. Character will freeze or change color.")&lt;br/&gt;&amp;lt;/text&amp;gt;&lt;br/&gt;&lt;br/&gt;// what does indication period look like&lt;br/&gt;// how do characters change color?[/code]</description><pubDate>Thu, 31 Jul 2025 22:23:47 GMT</pubDate><dc:creator>Dave</dc:creator></item><item><title>RE: changing picture.erase condition dynamically; reduce flicker between trials</title><link>https://forums.millisecond.com/Topic41467.aspx</link><description>&lt;blockquote data-id="41466" class="if-quote-wrapper" unselectable="on" data-guid="1753998914764" contenteditable="false" id="if_insertedNode_1753998914178"&gt;&lt;a class="quote-para" unselectable="on" style="display: none;" href="#" data-id="41466" 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="41466" 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="41466" title=" "&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;span unselectable="on" class="quote-markup"&gt;[b]&lt;/span&gt;jmaram - 7/31/2025&lt;span unselectable="on" class="quote-markup"&gt;[/b]&lt;/span&gt;&lt;/div&gt;&lt;div class="if-quote-message if-quote-message-41466"&gt;&lt;div class="if-quote-message-margin" contenteditable="true"&gt;Hello!&lt;br/&gt;&lt;br/&gt;I’m building a visual task where multiple objects fall from the top of the screen, and a player-controlled avatar can move left or right to collect them. Currently, I am dynamically changing the position of each object for each trial as it falls down, rather than using the animation attribute on the picture element to pre-define the falling paths. Because of this, I am experiencing "flickering" as each trial refreshes and as the objects "move" to their new position.&amp;nbsp;&amp;nbsp;&lt;br/&gt;&lt;br/&gt;To reduce screen flicker between trials, I’ve been using erase = false for the stimuli. However, I also see there are duplicates of the images that get created when the object needs to "move." Ideally, I want to have the stimuli to not flicker when at rest, and set erase=true and move to its new position when its supposed to without duplicates.&amp;nbsp;&lt;br/&gt;&lt;br/&gt;I have attached the files with the script titled "picture trial.iqjs" . Please press 1 or 2 on the keyboard to move the avatar left or right.&lt;br/&gt;&lt;br/&gt;Thank you!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a class="if-quote-goto quote-link" href="#" data-id="41466"&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;You need to set /erase=false for all stimuli and additionally use clearScreen as the first thing in /stimulusFrames to clear the screen of remnants from the preceding trial.</description><pubDate>Thu, 31 Jul 2025 22:01:51 GMT</pubDate><dc:creator>Dave</dc:creator></item></channel></rss>