2009-08-29 41 views
1

我試圖在聲音文件完成播放後使用聲音回調函數來顯示按鈕。使用AudioServicesAddSystemSoundCompletion時嘗試隱藏聲音回調函數中的按鈕時出錯

//defining the callback 
AudioServicesAddSystemSoundCompletion (soundID, NULL, NULL, AudioPlaybackComplete, self.nextButton); 

這裏的回調函數:

static void AudioPlaybackComplete(SystemSoundID ssID, void *clientData) 

{

NSLog(@"Show those darn buttons"); 
AudioServicesRemoveSystemSoundCompletion (ssID); 

//show the buttons so you can switch to the next animal 
[nextButton setHidden:YES]; 

}

我有Next按鈕定義爲在頭文件中的出口,並且正確引用。當[nextButton setHidden:YES];嘗試執行時,出現以下錯誤:「error: 'nextButton' undeclared (first use in this function)」。

我相信因爲這是一個靜態函數,它在引用該文件的實例變量時遇到問題。任何關於如何讓這個方法不是靜態的想法,或者讓它正確引用按鈕?

謝謝

回答

1

啊我想通了。訣竅是將按鈕傳遞給回調函數。

//defining the callback  
    AudioServicesAddSystemSoundCompletion (soundID, NULL, NULL, AudioPlaybackComplete, self.nextButton); 

然後回調函數本身

static void AudioPlaybackComplete(SystemSoundID ssID, void *button) 
    { 
     NSLog(@"Show those darn buttons"); 
     AudioServicesRemoveSystemSoundCompletion (ssID); 

     //show the buttons so you can switch to the next animal 
     [button setHidden:NO]; 
    } 
相關問題