2012-10-14 44 views
1

我的GUI的目標是顯示圖像並獲得用戶的響應:按下按鍵(E或I)或不響應。在圖像本身之間應該有3秒暫停,顯示一些文字(我的代碼中爲a7 UIcontrol)。問題是我需要做30次,所以我在裏面使用了一個帶有計時器的循環。但GUI工作嚴重..在循環中使用計時器

應該做到以下幾點:

for 30 times do 
    2 sec showing text (a7) 
    then showing an image for 3 sec or until I\E are pressed 
end 

這是我的代碼;我加入了兩個版本,因爲它們之間的區別主要是在定時器功能和屬性..

https://docs.google.com/document/d/1N6LSDAYo_DVrBCUbuPth4JPCvkI3pBNcnAZcV6Kl9wM/edit
更可讀的版本:http://pastebin.com/vd3HNGv1

和照片都在這裏(雖然你可以使用任何2張):https://picasaweb.google.com/alex.goltser/ScrapbookPhotos

起初,問題總是一個錯誤:

you try to start the timer while it works

但現在卻是別的東西..

回答

0

爲什麼要運行定時器函數?

這裏有一個其他的方式,你可以如何運行你的循環:

for repeat = 1:30 

    *show text* 
    drawnow %# to make sure the graphics are updated 
    pause(2) %# wait two seconds 

    *show image* 
    drawnow 
    t = tic; 
    done = false; 
    while ~done && toc(t)<3 %# checks for keypress or until 3 secs 
     *check for keypress* 
     if E/I key has been pressed 
      done = true; 
     end 
    end 
end %# repeat 30x 
+0

我試着用你的idea-但它一點兒也不首先是工作, - 我有一個KeyPressFcn在我的人物屬性,但又該我寫而不是 - 「如果按鍵」?因爲我的按鍵功能沒有輸出,只是key_press(〜,eventdata).. – user1742463

+0

@ user1742463:我對這個混淆表示抱歉。 'keypress'不是指Matlab函數,而是指'是否按了一個鍵'。如果我記得正確,你可以在代碼中使用java.robot類。 – Jonas

+0

@ user1742463:實際上,你可以檢查'get(figureHandle,'currentCharacter')是否是'E'或'I',在* keypress *行檢查中。 – Jonas