亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Cocos2d-x3.5下“回調特性”的實現方法是什么

發布時間:2021-11-26 17:34:42 來源:億速云 閱讀:154 作者:柒染 欄目:移動開發

這期內容當中小編將會給大家帶來有關Cocos2d-x3.5下“回調特性”的實現方法是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Cocos2d-x3.5已經發布了一小段時間了,細心的同學會發現這個版本增加了一個加載cocos資源的重載版本:

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

相比另一個版本,這個多了一個回調函數的參數。

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

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

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

正文:

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

具體是怎么獲取呢?

先在CSLoader的源碼找找關于回調特性的原有實現:

Widget* widget = dynamic_cast

if (widget)

{

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

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

bindCallback(callbackName, callbackType, widget, _rootNode);

}

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

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

至此填了回調特性的節點及對應的參數我們都有了。

接下來,如何實現呢?

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

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

Widget* widget = dynamic_cast

if (widget){

//獲取回調特性相關屬性的信息。

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

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

//根據上述信息進行綁定。

this.bindCallback(callbackName, callbackType, widget);

}

});

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

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的兩大腳本引擎都沒有提供對回調特性的支持,包括新重載的createNode函數,也是沒有導出給兩個腳本引擎使用。

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

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

上述就是小編為大家分享的Cocos2d-x3.5下“回調特性”的實現方法是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

当涂县| 土默特右旗| 化隆| 安陆市| 通州市| 凤翔县| 瑞安市| 珠海市| 元阳县| 邹城市| 青铜峡市| 永靖县| 宣威市| 巴东县| 舟山市| 靖边县| 西藏| 房产| 郸城县| 二连浩特市| 榆中县| 乐山市| 清苑县| 泰顺县| 湖口县| 潮州市| 景东| 科尔| 彰化县| 文成县| 鄂尔多斯市| 玛纳斯县| 云林县| 新晃| 高邮市| 永春县| 齐河县| 辽宁省| 紫阳县| 平阴县| 海林市|