2012-03-13 15 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

問題は、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