en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

11.30.2010

CADisplayLink 的基本使用方法

 

自從 iOS SDK 3.1 起就增加了 CADisplayLink Class,這個 Class 的功能類似於 Timer。由於能支援每秒高達 60 fps 的畫面同步功能,所以更適合用在製作遊戲動畫上面,相較之下 Timer 較常使用在背景處理層面,其基本使用方式如下。(View-based Template)

第一步要先引入 CADisplayLink 的標頭檔,才能真正使用它。

#import <QuartzCore/CADisplayLink.h>
//自行定義的函式,用來設定使用CADisplayLink的相關參數
-(void)initializeTimer {

    //theTimer是CADisplayLink型態的指標,用來存放當前的設定狀態
    theTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(countTotalFrames)];

    //CADisplayLink內定值就是每秒60張(參數=1),參數=2就是每秒30張,以此類推
    double fps = 60 / theTimer.frameInterval;
    fpsLabel.text = [NSString stringWithFormat:@"%0.1f" , fps];

    //設定執行狀態並啟動theTimer
    [theTimer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}

如同 Timer / 計時器一樣,selector 是設定每次觸發時所需要呼叫的函式,其寫法如下。

-(void)countTotalFrames {
    frameCount ++;
    framesLabel.text = [NSString stringWithFormat:@"%d", frameCount];
}

最後,別忘記將 Quartz Core 的 framework 加入到你的專案內,程式才能正常執行。加入的方法是在 Groups & Files 內的專案名稱上按下右鍵 > Add > Existing Frameworks,之後選擇 QuartzCore.framework 並 Add 即可。








沒有留言:

張貼留言