【新功能】“回调特性”的使用教程:

前端之家收集整理的这篇文章主要介绍了【新功能】“回调特性”的使用教程:前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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(

(IoPU+1b
PtPGi^
然后发布资源 !7Yt`l$$z
3. C++中,创建一个自己的自定义类。 Zgy2Pot
这个类必须遵循如下要求: 5ykk11!p$
a. 继承 WidgetCallBackHandlerProtocol Node( 或其他继承自 Node 的类 ) ard3yNQt
b. 重写如下接口: =7J|KoKK
onLocateTouchCallback 764}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__ @H_403_234@
#define __TestCpp__MyClass__ @H_403_234@
#include "cocos2d.h" @H_403_234@
#include "cocostudio/CocoStudio.h" @H_403_234@
#include "cocostudio/WidgetCallBackHandlerProtocol.h" @H_403_234@
class MyClass:public cocos2d::Node,public cocostudio::WidgetCallBackHandlerProtocol @H_403_234@
{ @H_403_234@
public: @H_403_234@
CREATE_FUNC(MyClass) @H_403_234@
MyClass(); @H_403_234@
virtual ui::Widget::ccWidgetTouchCallback @H_403_234@
onLocateTouchCallback(const std::string&callBackName); @H_403_234@
ccWidgetClickCallback @H_403_234@
onLocateClickCallback(const ccWidgetEventCallback @H_403_234@
onLocateEventCallback(const void onTouch(Ref*sender,TouchEventType type); @H_403_234@
onClick(Ref*sender); @H_403_234@
onEvent(int eventType); @H_403_234@
private: @H_403_234@
vector<string>_touchTypes; @H_403_234@
string _click; @H_403_234@
string>_eventTypes; @H_403_234@
}; @H_403_234@ //.cpp file 21/a3Mlx#
#include "MyClass.h" @H_403_234@
@H_403_234@
#include "ui/UIText.h" @H_403_234@
@H_403_234@
USING_NS_CC; @H_403_234@
using namespace std; @H_403_234@
using namespace ui; @H_403_234@
@H_403_234@
MyClass::MyClass() @H_403_234@
{ } @H_403_234@
@H_403_234@
ccWidgetTouchCallback MyClass::string&callBackName) @H_403_234@
{ @H_403_234@
if(callBackName=="onTouch")//判断事件名,返回对应的函数。下同 @H_403_234@
{ @H_403_234@
return CC_CALLBACK_2(onTouch,this); @H_403_234@
} @H_403_234@
@H_403_234@
return nullptr; @H_403_234@
} @H_403_234@
@H_403_234@
ccWidgetClickCallback if(callBackName=="onClick") @H_403_234@
{ @H_403_234@
CC_CALLBACK_1(onClick,138)"> return nullptr; @H_403_234@
} @H_403_234@
@H_403_234@
ccWidgetEventCallback "onEvent") @H_403_234@
{ @H_403_234@
onEvent,this); @H_403_234@
} @H_403_234@
return nullptr; @H_403_234@
} @H_403_234@
@H_403_234@
void Ref*object,133)">TouchEventType type) @H_403_234@
{ @H_403_234@
CCLOG("onTouch"); @H_403_234@
} @H_403_234@
@H_403_234@
void Ref*sender) @H_403_234@
{ @H_403_234@
"onClick"); @H_403_234@
} @H_403_234@
@H_403_234@
void int eventType) @H_403_234@
{ @H_403_234@
"onEvent"); @H_403_234@
} @H_403_234@ ^?^|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__ @H_403_234@
#define __cocos2d_libs__MyClassReader__ @H_403_234@
#include "cocostudio/CocosStudioExport.h" @H_403_234@
#include "cocostudio/WidgetReader/NodeReader/NodeReader.h" @H_403_234@
@H_403_234@
class MyClassReader:public NodeReader @H_403_234@
{ @H_403_234@
public: @H_403_234@
MyClassReader() {}; @H_403_234@
~MyClassReader() {}; @H_403_234@
@H_403_234@
static MyClassReader*getInstance(); @H_403_234@
static void purge(); @H_403_234@
@H_403_234@
Node*createNodeWithFlatBuffers(const flatbuffers::Table*nodeOptions); @H_403_234@
}; @H_403_234@ #endif /*defined(__cocos2d_libs__MyClassReader__) */ 4qSS<SqY
//.cpp file @H_403_234@
#include "MyClassReader.h" @H_403_234@
#include "MyClass.h" @H_403_234@
USING_NS_CC; @H_403_234@
static MyClassReader*_instanceMyClassReader=nullptr; @H_403_234@
@H_403_234@
MyClassReader*MyClassReader::getInstance() @H_403_234@
{ @H_403_234@
if(!_instanceMyClassReader) @H_403_234@
{ @H_403_234@
_instanceMyClassReader = new MyClassReader (); @H_403_234@
} @H_403_234@
return _instanceMyClassReader; @H_403_234@
} @H_403_234@
void purge() @H_403_234@
{ @H_403_234@
CC_SAFE_DELETE(_instanceMyClassReader); @H_403_234@
} @H_403_234@
Node*Table*nodeOptions) @H_403_234@
{ @H_403_234@
MyClass*node=create(); @H_403_234@
@H_403_234@
setPropsWithFlatBuffers(node,nodeOptions); @H_403_234@
@H_403_234@
return node; @H_403_234@ } a+a%}76N
Mi/'4~0Y
5. 在加载节点之前注册这个接口到CSLoader %C E@}
CSLoader*instance=CSLoader::getInstance(); @H_403_234@
instance -> registReaderObject ( " MyClassReader" , ( ObjectFactory :: Instance ) MyClassReader :: getInstance ); @H_403_234@ 注意第一个参数必须是第一步填写的自定义类名加“Reader ”如上述的"MyClassReader" n%ArA])_&
6. 使用CreateNode
加载你的节点。 1'U%7#;E
1\608~ZH
>'1Q"$;
Bzy=@]`
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!注意:!!! Mn\ B\
你的自定义类的create已经委托给工厂类,只要你注册工厂类的时候没写错,工厂类会在createNode里边create你的自定义类。g-V\ s&}
所以不需要你自己再create自定义类。
最终createNode返回的就是你的自定义类。 wPO@f~[Ji

猜你在找的Cocos2d-x相关文章