Я написал код, который создает фигуру с 3 кнопками и текстовым полем. программа жалуется на мою функцию обратного вызова, когда я нажимаю кнопку.MATLAB: У меня проблемы с функцией обратного вызова
function game(states)
fig=figure('position',[200 150 500 370]);
face.B1=uicontrol('parent',fig,'style','pushbutton','string','start!','visible','on','position',[20 160 460 50]);
face.B2=uicontrol('style','pushbutton','parent',fig,'string','B2','visible','off','position',[20 90 460 50]);
face.B3=uicontrol('style','pushbutton','parent',fig,'string','B3','visible','off','position',[20 20 460 50]);
face.txtbx=uicontrol('style','text','parent',fig,'string','welcome to my game. press start to begin','position',[20 230 460 120]);
%set the callback function of the button
%when the button is pressed, i want to initiate the changestate function
set(face.B1,'callback','changestate(face,states,1);');
% while 1
uiwait(fig)
% end
end
Это функция, которую я хочу вызвать, когда нажимается кнопка. содержание этой функции не важно на мой вопрос, но я включить его только в случае, если
function face = changestate(face,states,nextstate)
disp('enter changestate')
face.B1=set(face.B1,'string',states{nextstate}.B1str,'callback','changestate(face,states,states{nextstate}.B1next)');
if ~isnan(states(nextstate).B2str)
face.B2=set(face.B2,'string',states{nextstate}.B2str,'callback','changestate(face,states,states{nextstate}.B2next)','visible','on');
else face.B2=set(face.B2,'visible','off');
end
if ~isnan(states(nextstate).B3str)
face.B3=set(face.B3,'string',states{nextstate}.B3str,'callback','changestate(face,states,states{nextstate}.B3next)','visible','on');
else face.B3=set(face.B3,'visible','off');
end
face.txtbx=set(face.txtbx,'string',states{nextstate}.txtbxstr);
% uiresume(fig)
end
ошибка, что я получаю это:
ошибок с помощью WaitFor Undefined функции или переменной «лица».
Ошибка использования WaitFor Ошибка при оценке UIControl CallBack
Эта ошибка возникает, когда я нажимаю кнопку B1. Я хочу, чтобы кнопка инициировала функцию изменения. может кто-нибудь объяснить мне, почему я получаю эту ошибку?
спасибо werner. мой код теперь работает –
Добро пожаловать. Пожалуйста, примите ответ, щелкнув зеленую проверку возле моего ответа. Не забывайте, что если вы хотите уведомить человека, который отвечает на ваш вопрос, вам нужно прокомментировать его ответ, иначе человек не будет знать, что вы прокомментировали. Я также заметил, что вы не принимали ответ на свои другие вопросы, пожалуйста, если вы удовлетворены ответами, обязательно отметьте их как принятые. Икс) – Werner