show mouse cursor with conditional statement


Author
Message
eleonora_parr
eleonora_parr
Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)
Group: Forum Members
Posts: 40, Visits: 148
Hi all,
I am programming an experiment during which subjects are shown with a series of picture frames that  in sequence create a brief video. After watching the video the item on the screen suddenly disappears, and that's when subjects have to use the mouse cursor to select where they think the item was before it disappeared. 
For this reason I don't want the mouse cursor to be on the screen for the whole trial, in order to prevent that subjects could trace with the mouse the position of the item before it disappears. 
So, my problem is that -as far as I know - the showmousecursor property could be set either to true or false, but I want the mouse cursor to show just at the end of the trial, specifically when the last frame is presented. Do you know any trick (i.e. conditional statements that could be used) to show the mouse cursor just at the end of trial (i.e. when participant have to make the response)??

Here is my code:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound); trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_w, values.time_final_third)]
/ stimulusframes = [1 = safe_first_frame]
/ inputdevice = mouse
/ correctresponse =(lbuttondown)
/ validresponse = (lbuttondown)
/ responsetrial = (lbuttondown, space)
/ ontrialend = [values.x=trial.safe_3_backward_inc.responsex;values.y=trial.safe_3_backward_inc.responsey;]
</trial>


Thank you in advance!


Eleonora

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
eleonora_parr - 1/11/2021
Hi all,
I am programming an experiment during which subjects are shown with a series of picture frames that  in sequence create a brief video. After watching the video the item on the screen suddenly disappears, and that's when subjects have to use the mouse cursor to select where they think the item was before it disappeared. 
For this reason I don't want the mouse cursor to be on the screen for the whole trial, in order to prevent that subjects could trace with the mouse the position of the item before it disappears. 
So, my problem is that -as far as I know - the showmousecursor property could be set either to true or false, but I want the mouse cursor to show just at the end of the trial, specifically when the last frame is presented. Do you know any trick (i.e. conditional statements that could be used) to show the mouse cursor just at the end of trial (i.e. when participant have to make the response)??

Here is my code:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound); trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_w, values.time_final_third)]
/ stimulusframes = [1 = safe_first_frame]
/ inputdevice = mouse
/ correctresponse =(lbuttondown)
/ validresponse = (lbuttondown)
/ responsetrial = (lbuttondown, space)
/ ontrialend = [values.x=trial.safe_3_backward_inc.responsex;values.y=trial.safe_3_backward_inc.responsey;]
</trial>


Thank you in advance!


Eleonora

The only trick I can think of would be to split things into two trials, i.e. something like this:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc_present>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound);
    trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
    trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);
]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_final_third
/ branch = [
    trial.safe_3_backward_inc_respond;
]
/ recorddata = false
</trial>

<trial safe_3_backward_inc_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
...
/ ontrialend = [values.x=trial.safe_3_backward_inc_respond.responsex;values.y=trial.safe_3_backward_inc_respond.responsey;]
</trial>

eleonora_parr
eleonora_parr
Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)Respected Member (490 reputation)
Group: Forum Members
Posts: 40, Visits: 148
Dave - 1/11/2021
eleonora_parr - 1/11/2021
Hi all,
I am programming an experiment during which subjects are shown with a series of picture frames that  in sequence create a brief video. After watching the video the item on the screen suddenly disappears, and that's when subjects have to use the mouse cursor to select where they think the item was before it disappeared. 
For this reason I don't want the mouse cursor to be on the screen for the whole trial, in order to prevent that subjects could trace with the mouse the position of the item before it disappears. 
So, my problem is that -as far as I know - the showmousecursor property could be set either to true or false, but I want the mouse cursor to show just at the end of the trial, specifically when the last frame is presented. Do you know any trick (i.e. conditional statements that could be used) to show the mouse cursor just at the end of trial (i.e. when participant have to make the response)??

Here is my code:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound); trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_w, values.time_final_third)]
/ stimulusframes = [1 = safe_first_frame]
/ inputdevice = mouse
/ correctresponse =(lbuttondown)
/ validresponse = (lbuttondown)
/ responsetrial = (lbuttondown, space)
/ ontrialend = [values.x=trial.safe_3_backward_inc.responsex;values.y=trial.safe_3_backward_inc.responsey;]
</trial>


Thank you in advance!


Eleonora

The only trick I can think of would be to split things into two trials, i.e. something like this:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc_present>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound);
    trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
    trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);
]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_final_third
/ branch = [
    trial.safe_3_backward_inc_respond;
]
/ recorddata = false
</trial>

<trial safe_3_backward_inc_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
...
/ ontrialend = [values.x=trial.safe_3_backward_inc_respond.responsex;values.y=trial.safe_3_backward_inc_respond.responsey;]
</trial>

Hi Dave,
Thank you for your answer.
Do you mean that after your code I would then need to combine the trials within a block?
Just to make sure that I am understanding correctly.. 
I've already tried the option of splitting the two but I would have preferred to keep everything into a single trial, that is why I was looking for a trick :) If that's not possible I will go with this option though 

Thank you again,

Eleonora
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
eleonora_parr - 1/11/2021
Dave - 1/11/2021
eleonora_parr - 1/11/2021
Hi all,
I am programming an experiment during which subjects are shown with a series of picture frames that  in sequence create a brief video. After watching the video the item on the screen suddenly disappears, and that's when subjects have to use the mouse cursor to select where they think the item was before it disappeared. 
For this reason I don't want the mouse cursor to be on the screen for the whole trial, in order to prevent that subjects could trace with the mouse the position of the item before it disappears. 
So, my problem is that -as far as I know - the showmousecursor property could be set either to true or false, but I want the mouse cursor to show just at the end of the trial, specifically when the last frame is presented. Do you know any trick (i.e. conditional statements that could be used) to show the mouse cursor just at the end of trial (i.e. when participant have to make the response)??

Here is my code:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound); trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);trial.safe_3_backward_inc.insertstimulusframe(picture.safe_w, values.time_final_third)]
/ stimulusframes = [1 = safe_first_frame]
/ inputdevice = mouse
/ correctresponse =(lbuttondown)
/ validresponse = (lbuttondown)
/ responsetrial = (lbuttondown, space)
/ ontrialend = [values.x=trial.safe_3_backward_inc.responsex;values.y=trial.safe_3_backward_inc.responsey;]
</trial>


Thank you in advance!


Eleonora

The only trick I can think of would be to split things into two trials, i.e. something like this:

<values>
/Actiontype=0
/con = 0
/object = 0
/length = 0
/time_sound = (round(rand(60,180)))
/time_second_frame = time_sound+60+5
/time_third_frame = time_sound+60+5+5
/time_final_third = time_sound+60+5+5+5
</values>

<trial safe_3_backward_inc_present>
/ ontrialbegin = [values.Actiontype="Withdrawal"; values.con = "Incongruent"; values.object = "safe"; values.length = 3]
/ ontrialbegin = [trial.safe_3_backward_inc.insertstimulusframe(sound.take, values.time_sound);
    trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_second_frame, values.time_second_frame);
    trial.safe_3_backward_inc.insertstimulusframe(picture.safe_minus_third_frame, values.time_third_frame);
]
/ stimulusframes = [1 = safe_first_frame]
/ validresponse = (0)
/ inputdevice = mousekey
/ showmousecursor = false
/ trialduration = values.time_final_third
/ branch = [
    trial.safe_3_backward_inc_respond;
]
/ recorddata = false
</trial>

<trial safe_3_backward_inc_respond>
/ stimulusframes = [1=safe_w]
/ inputdevice = mouse
/ showmousecursor = true
/ validresponse = (lbuttondown)
/ correctresponse = (lbuttondown)
...
/ ontrialend = [values.x=trial.safe_3_backward_inc_respond.responsex;values.y=trial.safe_3_backward_inc_respond.responsey;]
</trial>

Hi Dave,
Thank you for your answer.
Do you mean that after your code I would then need to combine the trials within a block?
Just to make sure that I am understanding correctly.. 
I've already tried the option of splitting the two but I would have preferred to keep everything into a single trial, that is why I was looking for a trick :) If that's not possible I will go with this option though 

Thank you again,

Eleonora

> Do you mean that after your code I would then need to combine the trials within a block?

You only need to run the first ("present") trial via a block or other means. That trial then automatically invokes the corresponding "respond" trial via /branch.

I really cannot think of any other option, so this would be the way to go.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search