-
Notifications
You must be signed in to change notification settings - Fork 1
/
drag_slider.asv
77 lines (67 loc) · 2.55 KB
/
drag_slider.asv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
ShowCursor('Arrow');
%% randomly place cursor and initialize variables
gs = round(gap_size/2);
resp = 0; buttons=[]; haschanged=false; hasconfirmed=false;int=0;
% while ((resp< gs && resp>-gs) || resp<-maxScale || resp>maxScale), resp = randi(nScale) - maxScale+1;end
% if resp<0,int=-1;elseif resp>0, int=1;end
display_response
%% collect response
while ~any(buttons) % wait for click
[x,y,buttons] = GetMouse;
end
while ~hasconfirmed
while any(buttons) || ~haschanged % wait for release and change of cj and confirmation
[resp_x, resp_y, buttons] = GetMouse();
% record response (and bound it to the scale length)
if resp_x>=barrect(1) && resp_x<gap(1) % if mouse's in the left rect
resp = ceil((resp_x-gap(1))/cursorwidth);
haschanged = true;
int = -1;
elseif resp_x>gap(3) && resp_x<=barrect(3) % if mouse's in the right rect
resp = floor((resp_x-gap(3))/cursorwidth);
haschanged = true;
int = 1;
end
%--- display response
display_response;
end
% check for confirmation
if ~hasconfirmed
switch 'mouse'
case 'mouse'
[x,y,buttons] = GetMouse;
if buttons(3)==1, hasconfirmed = true;end
resp_t = GetSecs;
case 'keyboard'
[isdown resp_t keycode] = KbCheck; % get timing and key
% translate key code into key name
name = KbName(keycode);
% only take first response if multiple responses
if ~iscell(name), name = {name}; end
name = name{1};
if strcmp('space',name),hasconfirmed = true;end
%until release
if cfg.until_release
[resp_release x name] = KbCheck; % get cfg.timing and resp1 from keyboard
if sum(resp_release) == 1
if strcmp('',KbName(name))
resp_release = 0;
end
end
end
end
end
end
% assign values to variables
if ~show_cj1 % first decision
trials(t).resp1_time = resp_t;
trials(t).cj1 = resp + int;
trials(t).int1 = int;
trials(t).responded1 = hasconfirmed;
else
trials(t).resp2_time = resp_t;
trials(t).cj2 = resp + int;
trials(t).int2 = int;
trials(t).responded2 = hasconfirmed;
end
HideCursor;