1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Cocos2d-x3.5下“回調(diào)特性”的實現(xiàn)方法是什么

      這期內(nèi)容當中小編將會給大家?guī)碛嘘PCocos2d-x3.5下“回調(diào)特性”的實現(xiàn)方法是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

      創(chuàng)新互聯(lián)建站是一家業(yè)務范圍包括IDC托管業(yè)務,虛擬空間、主機租用、主機托管,四川、重慶、廣東電信服務器租用,成都服務器托管,成都網(wǎng)通服務器托管,成都服務器租用,業(yè)務范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務公司。

      Cocos2d-x3.5已經(jīng)發(fā)布了一小段時間了,細心的同學會發(fā)現(xiàn)這個版本增加了一個加載cocos資源的重載版本:

      Node* CSLoader::createNode(const std::string &filename, const  ccNodeLoadCallback &callback)

      相比另一個版本,這個多了一個回調(diào)函數(shù)的參數(shù)。

      框架用這個東西干了什么?

      通過閱讀源碼可以知道,在加載完一個節(jié)點后,框架會將節(jié)點簡單地回調(diào)給這個函數(shù)(除根節(jié)點外)。這樣,利用這個參數(shù),我們可以在加載資源的過程中對正在加載的節(jié)點做一些修飾處理。

      這篇文章就來講講,怎么用這個東西來十分簡便地實現(xiàn)此前那個有點復雜的功能:回調(diào)特性。

      正文:

      首先利用上邊的功能,我們可以在加載時得到各個節(jié)點對象,其次我們需要獲取Cocos中填寫的參數(shù)。

      具體是怎么獲取呢?

      先在CSLoader的源碼找找關于回調(diào)特性的原有實現(xiàn):

      Widget* widget = dynamic_cast

      if (widget)

      {

      std::string callbackName = widget->getCallbackName();

      std::string callbackType = widget->getCallbackType();

      bindCallback(callbackName, callbackType, widget, _rootNode);

      }

      以上這段代碼是在CSLoader::createNode加載Widget類型節(jié)點時,針對回調(diào)特性的一些特殊處理。就是將我們在Cocos中填寫的兩個回調(diào)特性的字段取出來,聯(lián)通widget,_rootNode傳給bindCallback進行綁定。

      上邊的兩個函數(shù):getCallbackName,getCallbackType,取出來的就是我們在Cocos中所填寫的回調(diào)參數(shù)信息。

      至此填了回調(diào)特性的節(jié)點及對應的參數(shù)我們都有了。

      接下來,如何實現(xiàn)呢?

      我們可以考慮跟上述類似的做法:

      CSLoader::createNode(root_path,[this](Node *node){//node既是當前加載出來的節(jié)點

      Widget* widget = dynamic_cast

      if (widget){

      //獲取回調(diào)特性相關屬性的信息。

      std::string callbackName = widget->getCallbackName();

      std::string callbackType = widget->getCallbackType();

      //根據(jù)上述信息進行綁定。

      this.bindCallback(callbackName, callbackType, widget);

      }

      });

      然后在當前類實現(xiàn)一個bindCallback函數(shù),用callbackName和callbackType進行一些字符串比對操作,找到一個合適的函數(shù),丟給widget做監(jiān)聽,比如:

      void MyScene::bindCallback(const std::string &callbackName,const  std::string &callbackType,widget){

      if(callbackName == “animal1” && callbackType ==  “Click”){//假定有一個playAnimal1的接口

      widget->addClickEventListener(CC_CALLBACK_2(MyScene::playAnimal1,this));//

      }

      else if(callbackName == “animal2” && callbackType ==  “Click”){//假定有一個playAnimal2的接口

      widget->addClickEventListener(CC_CALLBACK_2(MyScene::playAnimal2,this));

      }

      }

      1.目前為止Cocos2d-x的兩大腳本引擎都沒有提供對回調(diào)特性的支持,包括新重載的createNode函數(shù),也是沒有導出給兩個腳本引擎使用。

      但getCallbackName、getCallbackType這兩個函數(shù)都是有導出的,我們可以自行遍歷加載出來的根節(jié)點,利用這兩個函數(shù)來獲取Cocos中填寫的回調(diào)特性相關信息,根據(jù)這些信息,自己進行綁定。

      2.Cocos2.2開始提供了一個“用戶數(shù)據(jù)”的接口,這個接口所設置的數(shù)據(jù)可以通過Cocos2d::Node::getUserData獲取,配合這個東西具體能干什么,就看你的想象力了。

      上述就是小編為大家分享的Cocos2d-x3.5下“回調(diào)特性”的實現(xiàn)方法是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


      當前名稱:Cocos2d-x3.5下“回調(diào)特性”的實現(xiàn)方法是什么
      當前地址:http://ef60e0e.cn/article/poggcp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        田东县| 甘洛县| 封开县| 蒙自县| 翁源县| 东港市| 沂源县| 庆城县| 永安市| 远安县| 瓦房店市| 望奎县| 绍兴市| 沅江市| 乐业县| 即墨市| 同江市| 惠水县| 汉阴县| 龙口市| 雅安市| 朝阳市| 建德市| 宝清县| 五常市| 保定市| 龙游县| 房产| 澎湖县| 平凉市| 大丰市| 宝山区| 清新县| 南丹县| 绥芬河市| 黄梅县| 衡水市| 北宁市| 雅江县| 泰宁县| SHOW|