2011-01-26 21 views
0

ただ動いているボールのアニメーションにNSTimerの代わりにCADisplayLinkを使用したいのですが、CADisplayLinkでは動作しません。次のコードで何が問題になるのでしょうか?この場合、CADisplayLinkはなぜ動作しませんか?

#import "UntitledViewController.h" 


@implementation UntitledViewController 
@synthesize maBalle; 


-(void) update:(CADisplayLink*)displayLink { 
} 

-(void)topHorloge { 
    maBalle.center =CGPointMake(maBalle.center.x+coordonnees.x,maBalle.center.y+coordonnees.y); 
    if((maBalle.center.x)-20 <0 || (maBalle.center.x)+20 >320) 
     coordonnees.x=-coordonnees.x; 
    if((maBalle.center.y)-20 <0 || (maBalle.center.y)+20 >460) 
     coordonnees.y=-coordonnees.y; 
} 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(renderAndUpdate)]; 
    [displayLink setFrameInterval:2]; 
    [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 


} 
+0

コードのすべてをフォーマットする必要があるか、すぐに回答が得られない可能性があります。** {} ** – Joe

+0

hotpaw2が示すように、サンプルにコードが含まれていませんここに。 CADisplayLinkコールバックを処理する '-renderAndUpdate'メソッドはどこにありますか? –

答えて

1

あなたのrenderAndUpdateハンドラはどこですか? (ディスプレイリンクのコールバックとして指定したもの)

+0

renderAnUpdateはtopHorlogeではありません。しかし今、それは動作します。別の問題は、最初にCADisplayLinkを使用すると60fpsですが、2秒後には40fpsになるということです。この問題を解決するために私は何ができますか? –

関連する問題