#ifndef
__HELLOWORLD_SCENE_H__
#define
__HELLOWORLD_SCENE_H__
#include
"cocos2d.h"
using
namespace
cocos2d
;
// 多触点监听
class
HelloWorld
:
public
cocos2d
::
CCLayer
{
public
:
// 初始化
virtual
bool
init
();
static
cocos2d
::
CCScene
*
scene
();
CREATE_FUNC
(
HelloWorld
);
// 重写触屏回调函数
virtual
void
registerWithTouchDispatcher
(
void
);
virtual
void
ccTouchesBegan
(
CCSet
*
pTouch
,
CCEvent
*
pEvent
);
virtual
void
ccTouchesMoved
(
CCSet
*
pTouch
,
CCEvent
*
pEvent
);
virtual
void
ccTouchesEnded
(
CCSet
*
pTouch
,
CCEvent
*
pEvent
);
// 重写生命周期函数
virtual
void
onExit
();
};
#endif
#include
"HelloWorldScene.h"
#include
"../CocosDenshion/win32/MciPlayer.h"
#include
"sprite_nodes/CCAnimation.h"
#include
"AppMacros.h"
#include
"Hello.h"
#include
"menu_nodes/CCMenuItem.h"
using
namespace
cocos2d
;
using
namespace
CocosDenshion
;
USING_NS_CC
;
// 以上是Hello 场景 以下是HelloWorld的场景
// 返回一个特定的场景
CCScene
*
HelloWorld
::
scene
()
{
// 创建一个场景
CCScene
*
scene
=
CCScene
::
create
();
// 将 HelloWorld 层加到场景 之中
HelloWorld
*
layer
=
HelloWorld
::
create
();
scene
->
addChild
(
layer
);
return
scene
;
}
// 对HelloWorld的场景进行初始化
bool
HelloWorld
::
init
()
{
bool
bInitSucceed
=
false
;
if
(!
CCLayer
::
init
())
{
return
bInitSucceed
;
}
// 开启过触点监听务必调用此函数
setTouchEnabled
(
true
);
CCSprite
*
pSprite1
=
CCSprite
::
create
(
"CloseNormal.png"
);
pSprite1
->
setColor
(
ccc3
(
255
,
255
,
0
));
CCSprite
*
pSprite2
=
CCSprite
::
create
(
"CloseSelected.png"
);
pSprite1
->
setPosition
(
ccp
(
150
,
100
));
pSprite2
->
setPosition
(
ccp
(
200
,
300
));
addChild
(
pSprite1
,
0
,
91
);
addChild
(
pSprite2
,
0
,
92
);
return
true
;
}
// 注册多触点监听
void
HelloWorld
::
registerWithTouchDispatcher
()
{
CCDirector
::
sharedDirector
()->
getTouchDispatcher
()->
addStandardDelegate
(
this
,
0
);
}
void
HelloWorld
::
onExit
()
{
CCDirector
::
sharedDirector
()->
getTouchDispatcher
()->
removeDelegate
(
this
);
CCLayer
::
onExit
();
}
void
HelloWorld
::
ccTouchesBegan
(
CCSet
*
pTouch
,
CCEvent
*
pEvent
)
{
CCLOG
(
"ccTouchBegan"
);
CCSetIterator
iter
=
pTouch
->
begin
();
for
(
;
iter
!=
pTouch
->
end
();
iter
++)
{
CCTouch
*
pTouch
=
(
CCTouch
*)(*
iter
);
CCPoint
location
=
pTouch
->
getLocation
();
// 第一个触点
if
(
pTouch
->
getID
()
==
0
)
{
CCSprite
*
pSprite1
=
(
CCSprite
*)
this
->
getChildByTag
(
91
);
pSprite1
->
setPosition
(
location
);
}
else
if
(
pTouch
->
getID
()
==
1
)
{
// 第二个触点
CCSprite
*
pSprite2
=
(
CCSprite
*)
this
->
getChildByTag
(
92
);
pSprite2
->
setPosition
(
location
);
}
}
}
// 用户手指进行移动或者拖拽
void
HelloWorld
::
ccTouchesMoved
(
CCSet
*
pTouch
,
CCEvent
*
pEvent
)
{
CCLOG
(
"ccTouchMoved"
);
CCSetIterator
iter
=
pTouch
->
begin
();
for
(
;
iter
!=
pTouch
->
end
();
iter
++)
{
CCTouch
*
pTouch
=
(
CCTouch
*)(*
iter
);
CCPoint
location
=
pTouch
->
getLocation
();
// 第一个触点
if
(
pTouch
->
getID
()
==
0
)
{
CCSprite
*
pSprite1
=
(
CCSprite
*)
this
->
getChildByTag
(
91
);
pSprite1
->
setPosition
(
location
);
}
else
if
(
pTouch
->
getID
()
==
1
)
{
// 第二个触点
CCSprite
*
pSprite2
=
(
CCSprite
*)
this
->
getChildByTag
(
92
);
pSprite2
->
setPosition
(
location
);
}
}
}
void
HelloWorld
::
ccTouchesEnded
(
CCSet
*
pTouch
,
CCEvent
*
pEvent
)
{
CCLOG
(
"ccTouchEnded"
);
if
(!
pTouch
)
{
CCLOG
(
"HelloWorld::ccTouchesEnded pTouch Null"
);
return
;
}
CCSetIterator
iter
=
pTouch
->
begin
();
for
(
;
iter
!=
pTouch
->
end
();
iter
++)
{
CCTouch
*
pTouch
=
(
CCTouch
*)(*
iter
);
CCPoint
location
=
pTouch
->
getLocation
();
CCLOG
(
"pTouch 触摸点 %d 的坐标: x:%f, y:%f"
,
pTouch
->
getID
(),
location
.
x
,
location
.
y
);
}
}