這可能聽起來確實是小白,但我花了整整一天的時間來解決這個問題,並希望得到一些幫助。Objective-C中調用方法中的「自我」的替代方案
你看我有一種方法,我在遊戲中多次打電話。如果我使用[self myMethod];
,那麼它可以工作一次。然後當我再次調用它時,方法中的動畫不再開始了。
我需要的是用可以「分配」和「釋放」的選擇替換「自我」,以使我的動畫起作用。
我試過了;
@implementation gameViewController
gameViewController *object = [[gameViewController alloc] init];
[object myMethod];
但是,上述自我替代甚至沒有調用該方法。我不知道我做錯了什麼,它應該像「自我」一樣工作。
有什麼我錯過了?你如何讓班級的對象像「自我」一樣工作?
非常感謝。
下面是我的代碼更詳細的外觀;
[self explosionAnimations];
- (void) explosionAnimations
{
UIImage *image = [UIImage imageNamed: @"Yellow Explosion.png"];
[bomb setImage:image];
[UIView beginAnimations:@"bomb1ExplosionIncrease" context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
bomb.transform = CGAffineTransformMakeScale(3.4, 3.4);
[UIView commitAnimations];
}
setImage每次都能正常工作。但是動畫停止了該方法的第二次調用。在控制檯中,它會記錄「動畫已完成」,而圖像沒有任何事情發生。
這使我相信,不知何故「自我」認爲動畫已經完成,不會再費心去做。所以我認爲一個新的「alloc」可能讓它覺醒。
最有可能你正在接近這個錯誤的方式。你可能只需要重新設置一些東西,這樣調用方法(用自己或其他方式)就可以第二次運行。 – Nick
@尼克或者可能相反。也許在調用'[self myMethod]'的時候,一些額外的設置代碼被調用,這在OP的代碼示例中沒有調用。就像被添加到視圖或其他東西一樣,如果控制器沒有顯示在任何地方,顯然動畫將不會顯示。 (我不是很熟悉ObjC或OP在這裏試圖做什麼,所以我不確定是否有必要實例化一個控制器,然後不將它連接到某個東西。也許解決方案不是創建一個新的,但得到現有的一個處理。) – millimoose
@Chester如果你正嘗試在同一個控制器上運行一個動畫,那麼當你使用self時,你不應該試圖在同一個對象上調用myMethod而不是創建一個新的控制器嗎? – millimoose