1.创建文件,修改自定义类名称。 H 'WFORso[ 点击根节点 eI/I:G{f >,] eL Ovaj":L (!XYH@Mz<w i(&6ys5 在属性栏中修改自定义类类名,如:MyClass l ))~& ;EE&~&*w 6*(h9!_T1 2.加入UI控件, 修改回调方法。 RAD4q"}k 选中想要设置回调特性的控件,进入高级属性,修改回调方法和对应回调的名称。 ery?G- 如:Touch方法,名称为onTouch `aO@N( (IoPU1b PtPGi^ 然后发布资源 !7Yt`l$$z 3.在C中,创建一个自己的自定义类。 Zgy2Pot 这个类必须遵循如下要求: 5ykk!p$ a.继承WidgetCallBackHandlerProtocol和 Node(或其他继承自Node的类) ard3yNQt b.重写如下接口: =7J|KoKK onLocateTouchCallback 4}yV> onLocateClickCallback MoKXl?B< onLocateEventCallback v8 '`gY 返回对Touch、Click、Event三种事件的处理函数。(可以只重写你使用到的回调类型)。 "j.oR}s9?# 如: cmr6,3_ //.h file 0ez i?Um {>UMw>T[ :m)Rmwn_ ^qId]s nuQ Lq^e GmmT'3Q FSYjp{z5 c~pUhx1( Wf`Oye Rz #*>7X>,J #ifndef__TestCpp__MyClass__#define__TestCpp__MyClass__#include"cocos2d.h"#include"cocostudio/CocoStudio.h"#include"cocostudio/WidgetCallBackHandlerProtocol.h"classMyClass: publiccocos2d::Node, publiccocostudio::WidgetCallBackHandlerProtocol{public:CREATE_FUNC(MyClass)MyClass();virtualcocos2d::ui::Widget::ccWidgetTouchCallbackonLocateTouchCallback(conststd::string &callBackName);virtualcocos2d::ui::Widget::ccWidgetClickCallbackonLocateClickCallback(conststd::string &callBackName);virtualcocos2d::ui::Widget::ccWidgetEventCallbackonLocateEventCallback(conststd::string &callBackName);voidonTouch(cocos2d::Ref* sender, cocos2d::ui::Widget::TouchEventTypetype);voidonClick(cocos2d::Ref* sender);voidonEvent(cocos2d::Ref* sender, inteventType);private:std::vector<std::string> _touchTypes;std::string_click;std::vector<std::string> _eventTypes;};//.cpp file /a3Mlx# #include"MyClass.h"#include"ui/UIText.h"USING_NS_CC;usingnamespacestd;usingnamespacecocos2d::ui;MyClass::MyClass(){}Widget::ccWidgetTouchCallbackMyClass::onLocateTouchCallback(conststring &callBackName){if (callBackName == "onTouch")//判断事件名,返回对应的函数。下同 {returnCC_CALLBACK_2(MyClass::onTouch, this); }returnnullptr;}Widget::ccWidgetClickCallbackMyClass::onLocateClickCallback(conststring &callBackName){if (callBackName == "onClick") {returnCC_CALLBACK_1(MyClass::onClick, this); }returnnullptr;}Widget::ccWidgetEventCallbackMyClass::onLocateEventCallback(conststring &callBackName){if (callBackName == "onEvent") {returnCC_CALLBACK_2(MyClass::onEvent, this); }returnnullptr;}voidMyClass::onTouch(cocos2d::Ref* object, cocos2d::ui::Widget::TouchEventTypetype){CCLOG("onTouch");}voidMyClass::onClick(cocos2d::Ref* sender){CCLOG("onClick");}voidMyClass::onEvent(cocos2d::Ref* sender, inteventType){CCLOG("onEvent");}^?^|Y?f2P? 4.为第3步编写的类创建工厂类 H:{(CY?t 这个类必须继承cocostudio::NodeReader,并重写如下三个接口 K}5 $;W# getInstance ——返回工厂类的单例 t6L^ #' purge ——销毁工厂类 r/q1&*T createNodeWithFlatBuffers ——创建第3步编写的类,并调用setPropsWithFlatBuffers %dk$K!5D0 如: 1TxhEXB //.h file $OFFH[_z #ifndef__cocos2d_libs__MyClassReader__#define__cocos2d_libs__MyClassReader__#include"cocos2d.h"#include"cocostudio/CocosStudioExport.h"#include"cocostudio/WidgetReader/NodeReader/NodeReader.h"classMyClassReader : publiccocostudio::NodeReader{ public:MyClassReader() {}; ~MyClassReader() {}; staticMyClassReader* getInstance();staticvoidpurge();cocos2d::Node* createNodeWithFlatBuffers(constflatbuffers::Table* nodeOptions);};#endif/*defined(__cocos2d_libs__MyClassReader__) */ 4qSS<SqY //.cpp file#include"MyClassReader.h"#include"MyClass.h"USING_NS_CC;staticMyClassReader* _instanceMyClassReader = nullptr;MyClassReader* MyClassReader::getInstance(){if (!_instanceMyClassReader) {_instanceMyClassReader = newMyClassReader(); }return_instanceMyClassReader;}voidMyClassReader::purge(){CC_SAFE_DELETE(_instanceMyClassReader);}Node* MyClassReader::createNodeWithFlatBuffers(constflatbuffers::Table *nodeOptions){MyClass* node = MyClass::create();setPropsWithFlatBuffers(node, nodeOptions);returnnode;} aa%}N Mi/'4~0Y 5.在加载节点之前注册这个接口到CSLoader中 %C E@} CSLoader* instance = CSLoader::getInstance();instance->registReaderObject("MyClassReader",(ObjectFactory::Instance)MyClassReader::getInstance);注意第一个参数必须是第一步填写的自定义类名加“Reader ”如上述的"MyClassReader" n%ArA])_& 6. 使用CreateNode加载你的节点。 1'U%7#;E ~ZH >'1Q"$; Bzy=@]` !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意:!!! Mn B 你的自定义类的create已经委托给工厂类,只要你注册工厂类的时候没写错,工厂类会在createNode里边create你的自定义类。g-V s&} 所以不需要你自己再create自定义类。最终createNode返回的就是你的自定义类。 wPO@f~[Ji
推荐整理分享【新功能】“回调特性”的使用教程:,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
cocos2dx3.3 跑马灯功能的简单实现 ================================================头文件Marquee.h================================================#ifndef__H_MARQUEE_H__#define__H_MARQUEE_H__#includecocos2d.hclassMarquee:publiccocos2
cocos2dx3.3 便条提示语功能简单实现 =====================头文件===#ifndef__H_NOTETIP_H__#define__H_NOTETIP_H__#includeGlobal.hclassNoteTip:publicLayer{public:NoteTip();~NoteTip();CREATE_FUNC(NoteTip);staticvoidshow(constchar*content)
cocos2dx多边形纹理填充 演示demo: