打开刚创建的项目TouchesTest,等待xcode完成索引。

点击左上角向右箭头编译运行[快捷键CMD+R],注意运行的scheme是当前项目》模拟器,见下图。(默认的可能是cocos2dx》iOS Device,修改一下)

cocos2dx 触摸测试一 单点和多点

我比较习惯让模拟器竖屏,修改之:点击左侧项目根节点,屏幕中间视图顶部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,如下图

cocos2dx 触摸测试一 单点和多点

 点击Add完成添加文件。

 

新建一个测试类,MySprite。

如何新建?选中xcode左侧导航树Classes,右键New File,在弹出的文件模板选择框中左侧选择iOS C and C++,右侧icon选中C++ Class,点击Next。

在接下来的输入框中,在Save as中输入文件名MySprite.cpp,如下图,点击Create完成新建文件。

cocos2dx 触摸测试一 单点和多点

 

修改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__) */
View Code

相关文章: