该篇文章将利用之前所学知识以及即将要讲解的新知识制作一个功能简单的时钟。需要源码的朋友可以留下邮箱或者到相应资源页下载 http://download.youkuaiyun.com/download/u012945598/6609307
首先创建一个新的工程,命名为Clock_1,将所需资源引入到目录下,右键点击目录文件夹,选择Add Files to...。
资源文件加在完毕后,在Classes文件夹下创建一个C++文件,命名为clockBackgroundScene。在.h文件内添加如下代码:
.cpp文件中代码如下图所示
完成上述步骤后,打开AppDelegate.cpp,引入clockBackgroundScene的头文件#include"clockBackgroundScene.h",
将boolAppDelegate::applicationDidFinishLaunching()中的CCScene *pScene =HelloWorld::scene()改为
CCScene *pScene =clockBackgroundScene::scene();
此时运行项目,已经可以看到一个时钟背景位于屏幕中央
下面我们来为时钟添加时针,分针,秒针。
分别创建三个C++类文件,命名为hourHand,minuteHand,secondHand,并将三个类放在一个名为“时钟指针”的目录下面
首先我们设置时针,在hourHand.h中加入如下代码:
在hourHand.cpp文件中代码如下:
完成上述操作后,在clockBackgroundScene.h文件中引入hourHand的头文件,并创建hourHand类的对象m_hour(红色部分为新增代码)
#include<iostream>
#include"cocos2d.h"
#include"hourHand.h"
USING_NS_CC;
class clockBackgroundScene:publicCCLayer
{
public:
virtualbool init();
staticCCScene * scene(); //创建场景对象的方法
CREATE_FUNC(clockBackgroundScene);
public:
hourHand * m_hour; //创建hourHand的对象
};
在clockBackgroundScene.cpp文件的init( )方法中添加如下代码:
boolclockBackgroundScene::init(){
CCSize winSize=CCDirector::sharedDirector()->getWinSize();//获取屏幕大小
CCSprite * clockBk=CCSprite::create("background.jpg"); //创建一个精灵
clockBk->setPosition(ccp(winSize.width/2, winSize.height/2));//设置背景精灵的坐标
clockBk->setScale(0.5f); //将精灵缩小为原来的0.5倍
this->addChild(clockBk); //将时钟背景添加到屏幕上
m_hour=hourHand::create(); //创建时针对象
m_hour->bindSprite(CCSprite::create("shi.png"));
m_hour->setPosition(ccp(winSize.width/2, winSize.height/2));
this->addChild(m_hour);
returntrue;
}
操作完成后运行项目,我们会发现时钟上面多了一个指向12的指针。按照该方法,将minuteHand与secondHand类中的代码完成minuteHand.h文件与.cpp文件代码如下
由于secondHour文件代码与上述代码基本相同,故图片不在此处粘贴了,下面看一下clockBackgroundScene.cpp文件中的代码
m_minute ,m_second对象创建方法与m_hour相同,不要忘记引入头文件。以上步骤完成后,时钟的三个指针便都已经添加到了屏幕上,并指向12,接下来我们要做的便是让指针动起来。此时我们需要用到一个单线程定时期——schedule。
修改clockBackgroundScene.h中的代码
clockBackgroundScene.cpp文件代码如下图所示:
该教程到此就结束了,一个简单的时钟已经实现,由于素材等原因时针与钟的刻度可能略有偏差,运行效果图如下所示:
需要源代码的朋友可留下邮箱,请继续关注后续内容...