1
我遇到了麻煩,我想知道是否有人可以幫忙?圖像未出現在detachNewThreadSelector
當用戶在我的測驗遊戲中點擊答案時,我在屏幕上加載了一個覆蓋圖像,該圖像是勾號或十字形以指示答案是否正確。圖像正在加載到新線程中。
問題是圖像不會在用戶每次點擊答案時出現,它只會在一輪中出現大約20%的時間。
更令人感到奇怪的是,雖然我在幾個月前已經準備好了iOS3遊戲,並且這個問題沒有發生,但它似乎只是在更新到iOS4時纔開始。
下面是代碼:
tick = [UIImageView alloc];
[tick initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
[tick setImage:[UIImage imageNamed:@"correct.png"]];
cross = [UIImageView alloc];
[cross initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
[cross setImage:[UIImage imageNamed:@"wrong.png"]];
的線程在這裏稱爲:
的圖像在的loadView方法創建
-(void)answerAttempt:(UIButton *)b{
ansQues++;
if([b.currentTitle isEqualToString:ans]){
[NSThread detachNewThreadSelector: @selector(showTick) toTarget:self withObject:nil];
[appDelegate playSound:1];
score++;
...
...
...
}else{
[NSThread detachNewThreadSelector: @selector(showCross) toTarget:self withObject:nil];
[appDelegate playSound:0];
}
這裏是兩個線程調用的函數:
-(void)showTick{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[tick setHidden:NO];
[levelPage addSubview:tick];
[levelPage bringSubviewToFront: tick];
usleep(500000);
[tick removeFromSuperview];
[pool release];
}
-(void)showCross{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[cross setHidden:NO];
[levelPage addSubview:cross];
[levelPage bringSubviewToFront: cross];
usleep(500000);
[cross removeFromSuperview];
[pool release];
}
正如你可以從代碼中看出的那樣,我嘗試了各種方法來試圖讓它每次都顯示出來,但是現在還沒有找到任何解決方案。我已經檢查過以確保每次都調用正確的線程,而且它的確如此 - 只是UIImage用於勾號和交叉不顯示。
請隨時提出任何進一步的問題。
謝謝。
+1對我來說很好 – 2010-10-13 15:21:27
感謝您的幫助和建議隊友,但即時通訊嘗試在我的showTick方法中使用該行代碼,就在睡眠之前,我得到一個錯誤消息:'UIImageView'可能不會響應'-performSelectorOnMainThread:withObject:waitUntilFinished:'任何想法解決這個問題? – user474582 2010-10-14 12:54:31
我從內存中寫道。你有沒有看過文檔?他們是一個很好的資源。我可能在某處出現錯字。 – coneybeare 2010-10-14 14:37:48