打开刚创建的项目TouchesTest,等待xcode完成索引。
点击左上角向右箭头编译运行[快捷键CMD+R],注意运行的scheme是当前项目》模拟器,见下图。(默认的可能是cocos2dx》iOS Device,修改一下)
我比较习惯让模拟器竖屏,修改之:点击左侧项目根节点,屏幕中间视图顶部Tab标签选General,往下找Deployment info,Device Orientation只勾选Protrait,Upside Down。
重新运行看一下。
开始修改代码测试,关于创建的模板项目HelloWorld的各部分说明就不说了,一搜一大堆。
首先把我要用到的常用文件VisibleRect.h,VisibleRect.cpp添加到项目中。
这两个文件在cocos2d-x-2.2.1/samples/Cpp/TestCpp/Classes下,具体这两个文件干嘛用的,看看他的源码就知道了
如何添加到当前工程中?选择xcode左侧导航树的Classes,右键Add Files to xxx,在弹出的文件选择框中选中要添加的文件,勾选Destination,如下图
点击Add完成添加文件。
新建一个测试类,MySprite。
如何新建?选中xcode左侧导航树Classes,右键New File,在弹出的文件模板选择框中左侧选择iOS C and C++,右侧icon选中C++ Class,点击Next。
在接下来的输入框中,在Save as中输入文件名MySprite.cpp,如下图,点击Create完成新建文件。
修改MySprite.h代码如下:
1 // 2 // MySprite.h 3 // TouchesTest 4 // 5 // Created by HanHongmin on 13-12-28. 6 // 7 // 8 9 #ifndef __TouchesTest__MySprite__ 10 #define __TouchesTest__MySprite__ 11 12 #include "cocos2d.h" 13 using namespace cocos2d; 14 15 class MySprite:public CCSprite,public CCTouchDelegate{ 16 public: 17 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); 18 // optional 19 20 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); 21 virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); 22 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent); 23 24 // optional 25 virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent); 26 virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent); 27 virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent); 28 virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent); 29 }; 30 31 #endif /* defined(__TouchesTest__MySprite__) */
修改MySprite.cpp如下:
1 // 2 // MySprite.cpp 3 // TouchesTest 4 // 5 // Created by HanHongmin on 13-12-28. 6 // 7 // 8 9 #include "MySprite.h" 10 11 bool MySprite::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){ 12 CCLog("ccTouchBegan"); 13 return false; 14 } 15 // optional 16 17 void MySprite::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){ 18 CCLog("ccTouchMoved"); 19 } 20 void MySprite::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){ 21 CCLog("ccTouchEnded"); 22 } 23 void MySprite::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent){ 24 CCLog("ccTouchCancelled"); 25 } 26 27 // optional 28 void MySprite::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent){ 29 CCLog("****ccTouchesBegan*"); 30 } 31 void MySprite::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent){ 32 CCLog("****ccTouchesMoved*"); 33 } 34 void MySprite::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent){ 35 CCLog("****ccTouchesEnded*"); 36 } 37 void MySprite::ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent){ 38 CCLog("****ccTouchesCancelled*"); 39 }
在HelloWorldScene.h中include两个头文件,VisibleRect.h和MyScript.h
修改HelloWorldScene.cpp的init方法准备进行测试
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } MySprite* pSprite = MySprite::create("HelloWorld.png"); pSprite->setPosition(VisibleRect::center()); this->addChild(pSprite, 0); return true; }
我们发现,如此修改后,MySprite::create("HelloWorld.png")处报错。这是因为MySprite类没有相应的create静态方法。
回到MyScript类我们来补充一下。
在.h文件中声明这个方法:static MySprite* create(const char* pszFileName);
这时的MySprite.h文件如下:
1 // 2 // MySprite.h 3 // TouchesTest 4 // 5 // Created by HanHongmin on 13-12-28. 6 // 7 // 8 9 #ifndef __TouchesTest__MySprite__ 10 #define __TouchesTest__MySprite__ 11 12 #include "cocos2d.h" 13 using namespace cocos2d; 14 15 class MySprite:public CCSprite,public CCTouchDelegate{ 16 public: 17 static MySprite* create(const char *pszFileName); 18 19 virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); 20 // optional 21 22 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); 23 virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); 24 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent); 25 26 // optional 27 virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent); 28 virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent); 29 virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent); 30 virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent); 31 }; 32 33 #endif /* defined(__TouchesTest__MySprite__) */