您好,登錄后才能下訂單哦!
本篇內容介紹了“cocos Studio for mac中ListView加載問題怎么解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.加載使用UI編輯器編輯好的UI,我使用的是cocos2d-x 3.2版本。for mac是使用的1.0.0版本的。
編輯好之后,導出,在Export文件夾下有你編輯的UI項目,在那里可以找到.json的文件
這幾個json就是你要在cocos2d-x中加載的資源。
實際上,for mac版本的cocos studio編輯器的根視圖是Node,見下圖。這個和windows系統上是不一樣的。
單單只是這點區別,就難到了很多同學。也是因為這一點不一樣,所以使用的加載方法也不一樣。
windows下的編輯器使用下邊的方法加載UI資源:(因為我的xcode文字背景色設置是黑色,所以下邊的顏色可以看起來不清楚,大家講究著看吧。)
auto myLayout = dynamic_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("CJDHMainUI_1/CJDHMainUI_1.json")); auto gamestartBtn = dynamic_cast<Button*>(Helper::seekWidgetByName((Widget*)rootNode,"gameStart_Button"));
而在mac系統下的cocos studio使用下邊的加載方法加載資源:
Node* rootNode =cocostudio::timeline::NodeReader::getInstance()->createNode("CJDHMainUI/CJDHGameUI.json"); this->addChild(rootNode,0); auto homeBtn = dynamic_cast<Button*>(rootNode->getChildByName("Button_home")); homeBtn->addTouchEventListener(CC_CALLBACK_2(GameSelectLayer::touchEvent, this));
這里很明顯可以看出來,一個是Layout對象,一個是Node對象。
在使用ListView時也有一些不一樣。因為ListView只能添加Layout對象,不能添加Node的非Widget對象。所以,使用mac下的編輯器的時候,一定要從Node這個對象下邊取出Layout對象加進ListView才行。今天研究半天了,總算是把這個搞明白了。
比如,我在使用一個新的畫布編輯了一個ListView的Cell子項,當你想使用Widget的clone()時發現會報錯。一直沒有搞懂,直到最后豁然開朗了。請看下邊加載的方法。
ListView* lv = dynamic_cast<ListView*>(rootNode->getChildByName("ListView_main")); lv->setDirection(ui::ScrollView::Direction::VERTICAL); lv->setBounceEnabled(true);
//這個方法得到的是Node并不是Layout所以不能使用clone. Node* wid = cocostudio::timeline::NodeReader::getInstance()->createNode("CJDHMainUI/CCJDHTableCellUI.json"); //從Node中取出Layout對象,這個時候才可以使用clone Layout* out = dynamic_cast<Layout*>(wid->getChildByName("Panel")); addChild(out->clone());
“cocos Studio for mac中ListView加載問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。