cocos2d-x学习笔记(13)--schedule

cocos2d-x学习笔记(13)--schedule

本文出自https://shuwoom.com博客,欢迎访问!

    在游戏中,要检测两个运动的物体什么时候否碰撞,就必须在每一帧中对两个物体的矩阵范围进行判断,是否出现相交。同样的,一些游戏动画,为了做出动画效果,我们在设置动作的同时,还需要对每一帧的画面进行布局,在cocos2d-x中就可以使用schedule()函数实现了。

下面是schedule()函数的定义:

 

void CCNode::schedule(SEL_SCHEDULE selector)
{
	this->schedule(selector, 0);
}

void CCNode::schedule(SEL_SCHEDULE selector, ccTime interval)
{
	CCAssert( selector, "Argument must be non-nil");
	CCAssert( interval >=0, "Argument must be positive");

	CCScheduler::sharedScheduler()->scheduleSelector(selector, this, interval, !m_bIsRunning);
}

这里我只说第二个函数,第一个参数是回调类型,这里使用schedule_selector,如schedule_selector(MyClass::MyCallbackFunction),第二个参数是间隔时间,即多久调用MyCallbackFunction函数;

 

step1:创建cocos2d-win32项目,并命名为scheduler;

step2:在HelloWorldScene.h中添加如下类:

class ScheduleTest:public CCLayer
{
protected:
	int posX;//用于每次调用addTarget函数时增加对象水平方向的位置
public:
	ScheduleTest();

	virtual void onEnter();
	void addTarget(ccTime dt);//每次调用会增加一个精灵
};


 

step3:在HelloWorldScene.cpp中添加如下函数:

ScheduleTest::ScheduleTest()
{
	posX = 0;
}

void ScheduleTest::onEnter()
{
	CCLayer::onEnter();

	schedule(schedule_selector(ScheduleTest::addTarget), 1);
}


void ScheduleTest::addTarget(ccTime dt)
{
	posX += 10;
	CCSprite* player = CCSprite::spriteWithFile("player.png");
	addChild(player);
	player->setPosition(ccp(posX, 100));
}


 

同时修改HelloWorldScene中的scene函数,将HelloWorld *layer = HelloWorld::node();改为

ScheduleTest* layer = new ScheduleTest();

 

step4:编译运行程序,可以看到每隔一秒钟,背景就会增加一个人物;

 

 

源代码下载地址:http://download.csdn.net/download/wen294299195/4525824

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值