2013-02-12 38 views
-2

我想要顯示一個動畫圖像,一旦視圖加載了幾秒鐘,然後隱藏它並查看2個其他圖像,我已經使用數組來動畫化圖像然後設置一個定時器重複調用函數onTimer,在這個函數內我檢查圖像是否動畫一次,如果是這樣停止定時器和查看其他2張圖片功能不起作用,直到我在運行時點擊屏幕

它工作正常,當我運行項目,除了2圖像不會出現,直到我點擊屏幕!

她是代碼:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 
outline.animationImages = [NSArray arrayWithObjects: 
          [UIImage imageNamed:@"traffic.png"], 
          [UIImage imageNamed:@"red.png"], 
          [UIImage imageNamed:@"yellow.png"], 
          [UIImage imageNamed:@"green.png"], nil]; 

[outline setAnimationRepeatCount:1]; 
outline.animationDuration = 4; 
[outline startAnimating]; 

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0/30.0 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; 


} 

-(void) onTimer { 

if (![outline isAnimating] == TRUE){ // if animation has been played once, do something 
    NSLog(@"animation stopped, do something"); 
    rannan.image = [UIImage imageNamed:@"rannan.png"]; 
    outline.image = [UIImage imageNamed: @"outline.png"]; 
    [ timer invalidate]; 

    // do something 
} 
} 

它看起來像某種原因isAnimating未設置爲TRUE,直到我當項目運行

希望在屏幕上點擊,我會找到一個答案這一個:)

回答

0

我只是想知道爲什麼你每隔1/30秒發射你的計時器。您將動畫設置爲4秒,以便您可以在4秒後啓動定時器。

一種方法來檢查,如果你的看法不再動畫:

CALayer *presentationLayer = (CALayer*)outline.layer.presentationLayer; 
if(![presentationLayer animationKeys]) 
{ 
    NSLog(@"animation stopped, do something"); 
} 
+0

似乎有一個與你在上面它說,在第一行寫的代碼有問題:「物業表示層不能在向前CALSS發現對象CALayer「 ,並在if語句它說:」接收器類型「CALayer例如消息是一個前向聲明」 – Alsmayer 2013-02-12 18:15:44

+0

我做了計時器檢查每1/30秒的情況下動畫凍結或任何原因,在任何原因,在這種情況下它不會在4秒後完成 – Alsmayer 2013-02-13 04:54:29

+0

您需要導入QuartzCore框架才能使用CALayer。 – ggfela 2013-02-13 08:30:26

相關問題