Cocos2dx替换场景错误
Cocos2dx replacescene error
场景我有主场景,单击此按钮我想打开另一个场景。但我得到了以下错误:对'OyunMenu::scene()的未定义引用
主菜单.h
#ifndef MAINMENU_H_
#define MAINMENU_H_
#include "cocos2d.h"
class MainMenu : public cocos2d::CCLayer
{
public:
virtual bool init();
static cocos2d::CCScene* scene();
virtual void registerWithTouchDispatcher(void);
virtual void ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
virtual void ccTouchesMoved(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
virtual void ccTouchesEnded(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
virtual void ccTouchesCancelled(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
void menuCloseCallback(CCObject* pSender);
CREATE_FUNC(MainMenu);
};
#endif
主菜单.cpp
#include "MainMenu.h"
#include "SimpleAudioEngine.h"
#include "Constants.h"
#include "OyunMenu.h"
#define COCOS2D_DEBUG 1
using namespace std;
USING_NS_CC;
CCScene* MainMenu::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
MainMenu *layer = MainMenu::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
bool MainMenu::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
this->setTouchEnabled(true);
CCSprite* oyuncuBul = CCSprite::create("oyuna-basla.png");
oyuncuBul->setPosition(ccp(150,260));
oyuncuBul->setTag(menuOyuncuBul);
this->addChild(oyuncuBul, 0);
}
void MainMenu::ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::CCEvent* event)
{
CCTouch *touch = (CCTouch*) (touches->anyObject());
CCPoint point = touch->getLocationInView();
point = CCDirector::sharedDirector()->convertToGL(point);
CCSprite *oyuncuBul=(CCSprite *)this->getChildByTag(menuOyuncuBul);
CCRect rectOyuncuBul = oyuncuBul->boundingBox();
if(rectOyuncuBul.containsPoint(point)){
CCDirector::sharedDirector()->replaceScene(OyunMenu::scene());
}
OyunMenu.h
#ifndef OYUNMENU_H_
#define OYUNMENU_H_
#include "cocos2d.h"
class OyunMenu : public cocos2d::CCLayer
{
public:
virtual bool init();
static cocos2d::CCScene* scene();
virtual void registerWithTouchDispatcher(void);
virtual void ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
virtual void ccTouchesMoved(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
virtual void ccTouchesEnded(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
virtual void ccTouchesCancelled(cocos2d::CCSet* touches, cocos2d::CCEvent* event);
void menuCloseCallback(CCObject* pSender);
CREATE_FUNC(OyunMenu);
};
#endif
OyunMenu.cpp
#include "OyunMenu.h"
#include "SimpleAudioEngine.h"
#include "Constants.h"
#define COCOS2D_DEBUG 1
using namespace std;
USING_NS_CC;
CCScene* OyunMenu::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
OyunMenu *layer = OyunMenu::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
// on "init" you need to initialize your instance
bool OyunMenu::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}
}
.h文件
CCSprite* oyuncuBul;
.cpp文件
oyuncuBul = CCSprite::create("oyuna-basla.png");
oyuncuBul->setPosition(ccp(150,260));
oyuncuBul->setTag(menuOyuncuBul);
this->addChild(oyuncuBul, 0);
void MainMenu::ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::CCEvent* event)
{
CCTouch *touch = (CCTouch*) (touches->anyObject());
CCPoint point = touch->getLocationInView();
point = CCDirector::sharedDirector()->convertToGL(point);
CCRect rectOyuncuBul = oyuncuBul->boundingBox();
if(rectOyuncuBul.containsPoint(point)){
CCDirector::sharedDirector()->replaceScene(OyunMenu::scene());
}
您必须在jni文件夹的android.mk文件中添加此行
..//类别/OyunMenu.cpp
就像我被添加到我的android.mk文件中一样
LOCAL_SRC_FILES:=hellocpp/main.cpp\
../../Classes/Menu/AppDelegate.cpp
../../Classes/Menu/HelloWorldScene.cpp
../../Classes/Menu/MyScene.cpp
../../Classes/Menu/LoadingLayer.cpp
../../Classes/UI/NewLayer.cpp
../../Classes/UI/HelpLayer.cpp
相关文章:
- 为什么这个分配器不适用于"std::allocate_shared"?奇怪的模板替换错误
- 如何使替换 c 函数的变量名成为错误?
- 使用 g++ 预处理器进行替换会导致链接错误
- C++ 带有 decltype 的 SFINAE:替换失败成为错误?
- 在将 unicode 替换为C++字符串中的空格时出现分段错误
- C++代码在 for 循环的条件下给出运行时错误,而如果它被具有相同意义的代码替换,则编译正确
- 简单的字符串替换给出错误,尽管参数正确
- 标准::替换的逻辑错误
- C++字符串.替换生成"No matching function for call"错误
- 如何对 SFINAE 进行"deep",即当替换导致代码中进一步出现一些编译错误时?
- 使用 std::enable_if 重载函数以避免模板替换错误
- 替换WCHAR_T错误返回存储地址
- 模板扣除/替换错误,并返回
- C sqlite3插入或替换查询我认为是错误的
- C++:使用类型作为映射键会导致模板替换错误
- C++ - 通过提升进行反向替换 - 错误的索引错误
- 运算符重载代码编译错误,模板参数推断/替换失败
- 将 std::vector 的缓冲区替换为错误定位的字符数组
- 错误:与"运算符=="不匹配,模板参数推断/替换失败:
- 程序错误:用"%20"替换空格