91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【Cocos2d入門教程二】Cocos2d-x基礎概念

發布時間:2020-06-22 01:22:05 來源:網絡 閱讀:381 作者:小明咧 欄目:游戲開發

上一章已經學習了環境的搭建。這一章對基礎概念進行掌握。內容大概有:

1.導演

2.場景 

3.節點

4.層

4.精靈


1.導演(Director)

導演存在的主要作用:

環境設定(幀率 初始化openGl和渲染器)

場景管理

執行主循環

游戲就是個死循環 不斷不斷的渲染  就跟視頻沒兩樣 一幀一幀的繪制出來  話說提一下一幀為1/60秒  也就是說coco里一秒渲染60次

導演的管理:   計時器  事件管理器  動作管理器

導演繼承于REF  一個單例類


獲得導演類Director實例語句

auto director = Director :: getInstance();
【Cocos2d入門教程二】Cocos2d-x基礎概念


2.場景(Scene)

Scene場景也是cocos2dx中必不可少的元素,游戲中通常我們需要構建不同的場景(至少一個),游戲里關卡、版塊的切換也就是一個一個場景的切換,就像在電影中變換舞臺和場地一樣。場景的一個重要的作用就是流程控制的作用,我們可以通過Director的一系列方法控制游戲中不同的場景的自由切換。

下面是Director控制場景的常用方法:

  • runWithScene( Scene *scene ) 啟動游戲,并運行scene場景。本方法在主程序第一次啟動主場景的時候調用。如果已有正在運行的場景則不能調用該方法;會調用pushScene-->startAnimation。

  • pushScene( Scene *scene ) 將當前運行中的場景暫停并壓入到代碼執行場景棧中,再將傳入的scene設置為當前運行場景,只有存在正在運行的場景時才調用該方法;

  • replaceScene( Scene *scene ) 直接使用傳入的scene替換當前場景來切換畫面,當前場景被釋放。這是切換場景時最常用的方法。

  • popScene() 釋放當前場景,再從代碼執行場景中彈出棧頂的場景,并將其設置為當前運行場景。如果棧為空,直接結束應用。和PushScene結對使用

  • end() 釋放和終止執行場景,同時退出應用

  • pause() 暫停當前運行場景中的所有計時器和動作,場景仍然會顯示在屏幕上

  • resume () 恢復當前運行場景的所有計時器和動作,場景仍然會顯示在屏幕上

同時場景是層的容器,包含了所有需要顯示的游戲元素。通常,當我們需要完成一個場景時候,會創建一個Scene的子類,并在子類中實現我們需要的功能。比如,我們可以在子類的初始化中載入游戲資源,為場景添加層,啟動音樂播放等等。


3.Node節點


Cocos2d-x的核心類實例都是一個節點,這些類是以樹狀結構繼承的,他們的基類都是Node。

Node主要特征,它可以包含其他繼承于Node節點例如層、精靈等,可以設置定期回調函數,可以執行動作。

Node繼承自Ref類。


4.層(Layer)

 Layer是的Node節點的子類。層包含的是直接在屏幕上呈現的內容,并且可以接受用戶的輸入事件,包括觸摸,加速度計和鍵盤輸入等。我們需要在層中加入精靈,文本標簽或者其他游戲元素,并設置游戲元素的屬性,比如位置,方向和大小;設置游戲元素的動作等。通常,層中的對象功能類似,耦合較緊,與層中游戲內容相關的邏輯代碼也編寫在層中,在組織好層后,只需要把層按照順序添加到場景中就可以顯示出來了。要向場景添加層,我們可以使用addChild方法。

【Cocos2d入門教程二】Cocos2d-x基礎概念


addChild( Node child )
addChild( Node child, int zOrder )
addChild( Node *child, int zOrder, int tag )


 其中,Child參數就是節點。對于場景而言,通常我們添加的節點就是層。先添加的層會被置于后添加的層之下。如果需要為它們指定先后次序,可以使用不同的zOrder值。tag是元素的標識號碼,如果為子節點設置了tag值,就可以在它的父節點中利用tag值就可以找到它了。層可以包含任何Node作為子節點,包括Sprites(精靈), Labels(標簽),甚至其他的Layer對象。



5.精靈(Sprite)


創建精靈的幾種方式:

  • 直接創建:

    1
    2
    auto sprite = Sprite::create("HelloWorld.png");      
    this->addChild(sprite,0);
  • 使用紋理來創建精靈

    1
    2
    auto sprite1 = Sprite::createWithTexture(TextureCache::getInstance()>addImage("HelloWorld.png"));
    this->addChild(sprite1, 0);
  • 使用精靈幀來創建精靈

    1
    2
    auto sprite2=Sprite::createWithSpriteFrameName("HelloWorld.png"); 
    this->addChild(sprite2, 0);

精靈創建的過程:


//創建Scene
auto scene = Scene::create();
//創建層
auto layer = HelloWorld::create();
//把層加入場景中
scene->addChild(layer);
//創建一個精靈
auto sprite = Sprite::create("HelloWorld.png");
//把精靈加到層里
layer->addChild(sprite, 0);


精靈創建的底層源碼(這部分如果看不懂的可以忽略過):

【Cocos2d入門教程二】Cocos2d-x基礎概念



從精靈幀中尋找這個圖片,如果找不到則編譯器會直接崩掉


下面為四者關系的基本架構圖:

【Cocos2d入門教程二】Cocos2d-x基礎概念



對剛開始感覺有點不理解也實屬正常,先大體知道它們的主要是什么就行了。后來慢慢的會了解 。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桓仁| 沅陵县| 息烽县| 康定县| 乡宁县| 石河子市| 湟源县| 新津县| 永清县| 清镇市| 油尖旺区| 新余市| 自贡市| 蓝田县| 台中市| 宿州市| 随州市| 施秉县| 贞丰县| 镇巴县| 静宁县| 通海县| 长宁县| 江陵县| 青田县| 大连市| 南郑县| 富民县| 商河县| 孝义市| 监利县| 海原县| 信宜市| 故城县| 渝中区| 砀山县| 威远县| 武威市| 肇源县| 永善县| 沿河|