2012-03-13 5 views
0

간단한 게임을 만들려고합니다.MATLAB에서 푸시 버튼 가시성을 변경하려면 어떻게해야합니까?

해야 할 일 : 2 개의 푸시 버튼을 만들고 사용자가 각 버튼을 클릭하면 사라집니다.

실제로 수행하는 작업 : 첫 번째 버튼을 클릭하면 사라집니다. 그러나 제 2의 것을 클릭하면 아무 일도 일어나지 않습니다.

clear all, clc, close all 

fh = figure; 

n = 2; 
x = ceil(rand(10)*2); 
y = ceil(rand(10)*2); 

bgh = uibuttongroup('Parent',fh,'Title',... 
    'Button Game','Position',[.1 .2 .8 .6]); 

for i = 1:n 
    rbh1 = uicontrol(bgh,'Style','Pushbutton','String','Red',... 
     'Units','normalized','Position',[rand(1) rand(1) x(1,i) y(1,i)]); 
    set(rbh1,'CallBack','set(rbh1,''visible'',''off'')') 
end 

axt = axes('Parent',bgh,'Units','normalized'); 

axis([0.5 1 0.5 1]) 
axis square 
axis off 

어떻게 해결할 수 있습니까?

답변

1

문제는 하나의 핸들에 대해서만 콜백을 설정한다는 것입니다. 코드의 루프 비트를 다음과 같이 변경하면 작동합니다. 이것은 학습 연습처럼 보이기 때문에, 나는 그것을 탐구하고이 변화를 만드는 것이 왜 도움이되는지 알아 내려고합니다.

for i = 1:n 
rbh(i) = uicontrol(bgh,'Style','Pushbutton','String','Red',... 
'Units','normalized','Position',[rand(1) rand(1) x(1,i) y(1,i)]); 

set(rbh(i),'CallBack',['set(rbh(' num2str(i) '),''visible'',''off'')']) 
end 
관련 문제