Director是整個cocos2dx引擎的核心,是整個遊戲的控制儀,遊戲中的一些常用操作就是由Director來控制的,比如OpenGL ES的初始化,場景的轉換,遊戲暫停繼續的控制,世界座標和GL座標之間的切換,對節點(遊戲元素)的控制等,還有一些遊戲數據的保存調用,屏幕尺寸的獲取等都要由Director類來管理控制的。
在Cocos2dx中把統籌遊戲大局的類抽象爲導演(Director),會經常調用進行一些控制,所以該Director利用了單例設計模式。
通過前面我們創建的項目我們打開AppDelegate.cpp文件,可以發現裏面在使用了Director的一些函數。
getInstance();//返回一個導演的單例。
getOpenGLView();//獲取GLView。
setOpenGLView(glview);//設置GLView。
setDisplayStats(true);//左下角是否有顯示FPS。
setAnimationInterval(1.0 / 60);//設置FPS的值。
stopAnimation();//停止動畫。不進行繪製。停止主循環。
getInstance()->startAnimation();//主循環觸發一次,調用過stopAnimation才能調用這個函數。
我們通常用getInstance() 方法取得Director的實例。我們可以打開引擎的目錄D:\cocos2d-x-3.4\cocos\base下,找到類CCDirector,來查看該類的函數和用法。
最常見的一些函數有:
getWinSize () 返回OpenGL視圖的大小,以點爲單位。
getVisibleSize () 返回可見OpenGL視圖大小,以點爲單位。
getVisibleOrigin () 返回可見OpenGL視圖起始點,以點爲單位。
runWithScene (Scene *scene) 初始化遊戲進入第一個場景調用它。
pushScene (Scene *scene) 暫停當前運行的場景,壓入到暫停的場景棧中。
popScene () 從堆棧中彈出了一個場景。
replaceScene (Scene *scene) 用新的場景替換運行場景。終止正在運行的場景。
通過剛剛列舉的一些常用函數我們可以發現幾個類似的函數。
那麼getVisibleSize 和 getWinSize 和 getVisibleOrigin有什麼不同?
getVisibleSize:獲得可視區域的大小。若是分辨率跟屏幕尺寸一樣大,則getVisibleSize便是getWinSize。
getWinSize:獲取屏幕大小。
getVisibleOrigin:表示可視區域的起點座標。
另外還有一個就是Node節點裏面的getContentSize()函數。
getContentSize : 來獲得節點(Node)原始的大小。只是邏輯尺寸,不是像素。
上面提到的這四個函數最容易讓人搞混淆,理解即可。
本文由閉眼就天黑整理編輯,轉載請註明:http://www.byjth.com/biji/23.html | 閉眼就天黑專欄_原創技術博客