cocos2d-x单点触屏的疑问!

我想实现一个游戏。屏幕上有个气球,触摸到后会消失,并且会发出声音。
我根据oneRain(http://blog.csdn.net/onerain88/article/details/7550009)中的单点触屏,实现了一个TouchableSprite类。
TouchableSprite.h

#ifndef __TOUCHABLESPRITE_H__
#define __TOUCHABLESPRITE_H__

#include "cocos2d.h"



class TouchableSprite : public cocos2d::CCSprite ,public cocos2d::CCTargetedTouchDelegate
{
public:
	TouchableSprite();
	virtual ~TouchableSprite();
	
	static TouchableSprite* touchSpriteWithFile(const char *file);
	
	bool initWithFile(const char *file);
	
	virtual void onEnter();
	virtual void onExit();
	
	cocos2d::CCRect rect();
	
	bool containsTouchLocation( cocos2d::CCTouch *touch );
	
	virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
	virtual void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
	virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
};

#endif // __TOUCHABLESPRITE_H__

TouchableSprite.cpp

#include "TouchableSprite.h"
#include "SimpleAudioEngine.h"

using namespace CocosDenshion;

USING_NS_CC;

TouchableSprite::TouchableSprite()
{

}
TouchableSprite::~TouchableSprite()
{
	
}

void TouchableSprite::onEnter()
{
	CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate (this, 0, true); 
	CCSprite::onEnter(); 
}

void TouchableSprite::onExit()
{
	CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this); 
	CCSprite::onExit(); 
}

TouchableSprite* TouchableSprite::touchSpriteWithFile(const char *file)
{
	CCSprite::spriteWithFile(file);
}

bool TouchableSprite::initWithFile(const char *file)
{
	CCSprite::initWithFile(file);
}

CCRect TouchableSprite::rect()
{
	CCSize size = getContentSize();
	CCPoint pos = getPosition();
	
	return CCRectMake(pos.x-size.width/2, pos.y-size.height/2, size.width, size.height);
}

bool TouchableSprite::containsTouchLocation( cocos2d::CCTouch *touch )
{
	CCPoint touchPoint = touch->getLocation();  
	
	return CCRect::CCRectContainsPoint(TouchableSprite::rect(), touchPoint);
}

void TouchableSprite::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{
		SimpleAudioEngine::sharedEngine()->playEffect("ball_broke.wav");
}

bool TouchableSprite::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{
	if(containsTouchLocation(pTouch))
	{
		SimpleAudioEngine::sharedEngine()->playEffect("ball_broke.wav");
		return true;
	}
	else
		return false;
}

void TouchableSprite::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{
	
	
}

然后在HelloWorld.cpp中生成一个TouchableSprite的实例ball.可是怎么程序正常编译,但是怎么点击屏幕都没有声音。

音效的问题,现在不是那么加载了,音乐这块我纠结了一天多,你可以参考http://www.firedragonpzy.com.cn/index.php/archives/2984 完全可以搞定

http://www.firedragonpzy.com.cn/index.php/archives/2978问题的分析在这篇文章里

— Begin quote from ____

kevinsu917 发表于 2013-1-18 15:16 url

你好,我的问题是我想用单点触屏,通过点击那个精灵,使那个精灵消失。。可是现在我创建的TouchableSprit …

— End quote

开启触摸事件了吗单点的话使用目标代理

— Begin quote from ____

firedragonpzy 发表于 2013-1-18 09:16 url

http://www.firedragonpzy.com.cn/index.php/archives/2978问题的分析在这篇文章里

— End quote

你好,我的问题是我想用单点触屏,通过点击那个精灵,使那个精灵消失。。可是现在我创建的TouchableSprite这个类,没有出现点击消失的反应。。

void TouchableSprite::ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
	CCSetIterator iter = pTouches->begin();
	CCTouch* touch = (CCTouch*)(*iter);
	
	if(containsTouchLocation(touch)){
		cocos2d::CCNode* node = CCNode::getChildByTag(1);
		node->stopAllActions();
		node->runAction(CCHide::action());
	}

}

音效的问题,现在不是那么加载了,音乐这块我纠结了一天多,你可以参考http://www.firedragonpzy.com.cn/index.php/archives/2984 完全可以搞定

http://www.firedragonpzy.com.cn/index.php/archives/2978问题的分析在这篇文章里

— Begin quote from ____

kevinsu917 发表于 2013-1-18 15:16 url

你好,我的问题是我想用单点触屏,通过点击那个精灵,使那个精灵消失。。可是现在我创建的TouchableSprit …

— End quote

开启触摸事件了吗单点的话使用目标代理