加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Cocos2d-x 3.0-绘图节点Node中的Schedule

发布时间:2020-12-14 20:23:57 所属栏目:百科 来源:网络整理
导读:如何让HelloWorld项目中的HelloWorld文字实现自动运动呢? 有的童鞋会想到使用线程,不断修改Label的Position, 这样不行,因为在Cocos2d-x中只能在主线程中来修改Node中的信息,这是由于所有的node都是非线程安全的,如果我们的场景移除了node 在子线程种可

如何让HelloWorld项目中的HelloWorld文字实现自动运动呢?

有的童鞋会想到使用线程,不断修改Label的Position,

这样不行,因为在Cocos2d-x中只能在主线程中来修改Node中的信息,这是由于所有的node都是非线程安全的,如果我们的场景移除了node

在子线程种可能引用错误,所以,要让Node执行特定的变化,需要在当前的Node中使用Schedule

使用方法很简单

1。在当前的HelloWorldScne.h中添加一个方法在HelloWorldScene

如:

void gameLogic(float t); //注意这里的参数要设置为float

2.在HelloWorldScene::init方法添加以下代码:

this->schedule(schedule_select(HelloWorldScene::gameLogic),0.5);

还有把label设置一个tag

label->setTag(110);


3.在HelloWorldScne.cpp中实现这个方法

void HelloWorldScene::gameLogic(float t){

//在这里修改 HelloWorld 对应的Label的坐标

auto theLabel=this->getChildByTag(110);

theLabel->runAction(MoveBy::create(5,0.5));

if(theLable->getPositionX()>480){theLabel->setPositionX(0);}

}

这样就实现了HelloWorld的自动向右移动,每0.5秒移动5像素。

这里使用了runAction,实际上直接通过theLabel->setPositionX(newX)也可以,我们可以在这里修改Node的各种属性以达到对场景中的Node变换的作用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读