Kanzi常用操作4

十四、如何自定义消息

首先创建属性


然后将数据设置为消息即可


十五、如何通过代码获取节点
以空节点为例

ScreenSharedPtr screenNode = getScreen();//获取屏幕单例 
turnleftcontrolNode_ = screenNode->lookupNode<EmptyNode2D>(
"#turnleftcontrol");//lookupNode获取节点,其中模板参数是节点类型,函数的实参是节点的别名

经过测试,节点名不能和节点别名一样...

十六、如何通过代码获取自定义属性
以bool属性为例,自定义的bool属性需要通过类模板DynamicPropertyType来生成对应的类并获取
示例

using BoolDynamicPropertyTypeSharedPtr = shared_ptr<DynamicPropertyType<bool>>; 
using BoolDynamicPropertyType = DynamicPropertyType<bool>;  BoolDynamicPropertyTypeSharedPtr turnleft_; 
turnleft_ = make_shared<BoolDynamicPropertyType>("turnleft");//"turnleft"是kanzi工程中自定义属性的属性名

十七、如何通过代码获取自定义的消息

自定义消息需要通过模板类DynamicMessageType<MessageArguments>来获取

示例

using MessageDynamicMessageTypeSharedPtr =shared_ptr<DynamicMessageType<MessageArguments>>;
using MessageDynamicMessageType = DynamicMessageType<MessageArguments>;  MessageDynamicMessageTypeSharedPtr turnleftmessage_; 
turnleftmessage_=make_shared<MessageDynamicMessageType("turnleftmessage");//"turnleftmessage"是kanzi工程中自定义消息的消息名

十八、如何通过代码实现自定义消息的触发

首先需要将消息和触发函数进行一个绑定,消息类似于Qt中的信号,触发函数类似于Qt中的槽函数,与Qt稍微不同的是,添加消息触发需要指定节点

示例

turnleftcontrolNode_->addMessageHandler(*turnleftmessage_, 
bind(&Class::onTurnLeftMessageReceived, this));

addMessageHandler的第一个参数是消息类型,第二个参数是成员函数对象,该成员函数对象通过bind生成

上述代码就表示节点turnleftcontrolNode_会接收消息turnleftmessage_,当收到消息的时候,会触发成员函数&Class::onTurnLeftMessageReceived

可以在该成员函数中添加对应的触发动作

十九、如何通过代码获取属性值

bool leftflag_ = turnleftcontrolNode_->getProperty(*turnleft_);

上述代码的意义就是获取节点turnleftcontrolNode_上的自定义bool属性*turnleft_的值,并初始化leftflag_

二十、如何通过代码设置属性值

turnright3DNode_->setProperty(Node::VisibleProperty, true);

上述代码的意义就是设置节点turnright3DNode_上的非自定义的visible属性为true;


二十一、如何让字体的颜色渐变

可以通过glsl中的mix函数实现

vec4 color = mix(startcolor, endcolor, vTexCoord.x * coef);

其中,startcolor和endcolor是插值的起止颜色,vTexCoord.x纹理横坐标,作为横向插值系数,coef是一个因子,调整插值系数的大小,控制渐变程度

效果

二十二、使用Scroll View 2D制作滑动列表

节点结构如下


当滑动scroll view 2d时,改变stack layout的y方向的平移属性,如下图


此外,还要设置scroll view 2d的滑动范围以及滑动轴


如此,就能实现滑动列表了


一次滑动一个就是在滑动结束时,对stack layout的y方向的值进行判断


当满足条件时,设置相应的位置即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值