吧友帮我看看我这个怎么触屏不响应
cocos2d吧
全部回复
仅看楼主
level 2
updatsoul 楼主
bool HeroLayer::init(){
bool isinit = false;
do {
CC_BREAK_IF(!BasicLayer::init());
//创建主角
hero = CCSprite::create("hero.png");
hero->setAnchorPoint(ccp(0.5,0));
hero->setPosition(ccp(getWinSize().width / 2, getWinSize().height / 2));
this->addChild(hero);
this->setTouchEnabled(true);
isinit = true;
} while (0);
return isinit;
}
bool HeroLayer::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){
CCMoveTo* move_action = CCMoveTo::create(0.3f, pTouch->getLocation());
hero->runAction(move_action);
hero->setPosition( pTouch->getLocation());
return true;
}
void HeroLayer::registerWithTouchDispatcher(void){
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,INT_MIN+1,true);
}
2014年02月06日 17点02分 1
level 3
把头文件也发上来看看,是不是ccTouchBegan没写virtual void之类的错误?
PS. 对hero运行过move_action之后就不用再次setPosition了,hero->setPosition(pTouch->getLocation());一行可去掉
另外可以在ccTouchBegan的开头加上CCLOG("HeroLayer: touch began")来看是否是真的没有响应
2014年02月08日 14点02分 2
按照层主的意思我加了CCLOG,没有响应,然后那一行也去了,任然没有响应,我给群里一哥们儿发了代码,他创建了一个项目用上代码可以响应。。。。怎么回事啊?真奇了怪了
2014年02月13日 02点02分
楼下贴了头文件
2014年02月13日 02点02分
level 2
updatsoul 楼主
//
// Created by mxdy on 14-1-7.
//
//
#ifndef __FlyCoCo__GameLayer__
#define __FlyCoCo__GameLayer__
#include <iostream>
#include "BasicLayer.h"
#include "HeroLayer.h"
USING_NS_CC;
class GameLayer:public BasicLayer{
public:
GameLayer();
~GameLayer();
static CCScene* scene();
virtual bool init();
CREATE_FUNC( GameLayer );
virtual void onEnter();
virtual void bg_scroll_callback(float t);
private:
HeroLayer* herolayer;
};
#endif /* defined(__FlyCoCo__GameLayer__) */
2014年02月13日 02点02分 3
level 3
是不是加上CCLOG以后,日志窗口里没有信息?
如果是这样的话,需要检查一下BasicLayer的声明(是否重载ccTouchBegan, registerWithTouchDispatcher等),实在不行可以尝试在HeroLayer,GameLayer和BasicLayer声明里加入
public:
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void registerWithTouchDispatcher();
或者如果使用cocos2d-x v3.0的话,用新的EventDispatcher,可以在官方网站上找到示例
如果日志窗口里有信息,但hero没有移动,那应该是ccTouchBegan这个方法内部的问题,建议检查该方法的实现是否有bug。
(好像头文件发错了,源码是HeroLayer的,但头文件是GameLayer的)
2014年02月15日 10点02分 4
不是这些问题,最后我知道为什么了,又是忘了继承onEnter()、、、、,所以不行
2014年02月25日 08点02分
回复 updatsoul : 原来是这个原因。。
2014年02月28日 12点02分
1