我正在使用cocos2d-x来创建我的项目,但是我收到了这个错误:
错误(活动)“CocosDenshion :: SimpleAudioEngine :: SimpleAudioEngine()” (在“c:\ MyGame”第256行声明 \ cocos2d \ cocos \ audio \ include \ SimpleAudioEngine.h“)是 无法访问MyGame c:\ MyGame \ Classes \ MyGame .cpp
所以我将SimpleAudioEngine.h文件包含在我的CPP文件中,以便使用它。从错误中可以看出,要使用SimpleAudioEngine,我需要首先使用CocosDenshion命名空间,但是一旦输入完成,我就会:
CocosDenshion::SimpleAudioEngine()
Visual Studio向我显示此错误,VS可以向我显示声明,因此告诉我它知道标头的位置并且可以读取。所以我不知道无法访问的问题是什么。头文件无法访问的原因是什么?
MyGame.cpp
#include "MyGame.h"
#include "SimpleAudioEngine.h"
#include "GlobalVariables.h"
USING_NS_CC;
Scene* MyGame::createScene()
{
auto scene = Scene::create();
auto layer = MyGame::create();
scene->addChild(layer);
return scene;
}
bool MyGame::init()
{
if (!Layer::init())
{
return false;
}
is_dragged = false;
const char* MUSIC_PATH = "Music/Main_Theme_loop.ogg";
initTouch();
initTiled();
tempSetupSprite();
debugDrawLine();
this->scheduleUpdate();
return true;
}
MyGame.h
#include "GameSprite.h"
#include "GameMap.h"
class MyGame : public cocos2d::Layer
{
private:
void update(float dt);
void initTouch();
void initTiled();
void tempSetupSprite();
void debugDrawLine();
public:
static cocos2d::Scene* createScene();
virtual bool init();
virtual bool onTouchBegan(cocos2d::Touch* _touch, cocos2d::Event* _event);
virtual void onTouchEnded(cocos2d::Touch* _touch, cocos2d::Event* _event);
virtual void onTouchMoved(cocos2d::Touch* _touch, cocos2d::Event* _event);
virtual void onTouchCancelled(cocos2d::Touch* _touch, cocos2d::Event* _event);
CREATE_FUNC(MyGame);
private:
bool is_dragged;
Vec2 first_touch;
Vec2 last_drag_touch;
GameSprite* sprite;
GameMap* map;
};
答案 0 :(得分:0)
查看cocos2d-x(http://www.cocos2d-x.org/reference/native-cpp/V3.5/de/d8f/class_cocos_denshion_1_1_simple_audio_engine.html)的文档。构造函数受到保护。您必须使用以下方法来获取共享静态简单音频引擎实例:
getInstance()
答案 1 :(得分:0)
检查" cocos2d.h"你会发现" SimpleAudioEngine.h"不包括在这里。因此,当您尝试使用它时,必须先将其包含在内。
通过VS查找头文件并不意味着可以在cpp文件中访问该文件。它只是VS提供的一个方便的功能,让用户可以轻松检查文件。