【问题标题】:Creating Tile Map and using in visual studio project创建 Tile Map 并在 Visual Studio 项目中使用
【发布时间】:2015-01-28 10:27:41
【问题描述】:

如果我通过 Tiled SW 创建一个平铺地图并将其包含在我的 Visual Studio 项目中,那么当我使用模拟器运行该项目时它会崩溃。 cocos2d 提供的一些 tmx 文件在我的示例中可以正常工作,而有些则无法正常工作。如果我通过 Tiled SW 创建一个简单的地图并将 tmx 和 png 包含在我的项目中,它永远不会工作。只是想知道我的地图是否已损坏(使用最新的 Tiled 创建了 Windows 8)。总是得到以下错误。

有什么建议吗?

更新更多信息:

调用栈:

libcocos2d.dll!cocos2d::CCTexture2D::hasPremultipliedAlpha() 第 173 行 C++ libcocos2d.dll!cocos2d::CCSpriteBatchNode::updateBlendFunc() 第 668 行 C++ libcocos2d.dll!cocos2d::CCSpriteBatchNode::initWithTexture(cocos2d::CCTexture2D * tex, unsigned int capacity) 第 90 行 C++ libcocos2d.dll!cocos2d::CCTMXLayer::initWithTilesetInfo(cocos2d::CCTMXTilesetInfo * tilesetInfo, cocos2d::CCTMXLayerInfo * layerInfo, cocos2d::CCTMXMapInfo * mapInfo) 第 65 行 C++ libcocos2d.dll!cocos2d::CCTMXLayer::create(cocos2d::CCTMXTilesetInfo * tilesetInfo, cocos2d::CCTMXLayerInfo * layerInfo, cocos2d::CCTMXMapInfo * mapInfo) 第 45 行 C++ libcocos2d.dll!cocos2d::CCTMXTiledMap::parseLayer(cocos2d::CCTMXLayerInfo * layerInfo, cocos2d::CCTMXMapInfo * mapInfo) 第 133 行 C++ libcocos2d.dll!cocos2d::CCTMXTiledMap::buildWithMapInfo(cocos2d::CCTMXMapInfo * mapInfo) 第 217 行 C++ libcocos2d.dll!cocos2d::CCTMXTiledMap::initWithTMXFile(const char * tmxFile) 第 75 行 C++ ShootingCar.exe!HelloWorld::init() 第 59 行 C++ ShootingCar.exe!HelloWorld::create() 第 28 行 C++ ShootingCar.exe!HelloWorld::scene() 第 26 行 C++ ShootingCar.exe!AppDelegate::applicationDidFinishLaunching() 第 52 行 C++ libcocos2d.dll!cocos2d::CCApplication::run() 第 71 行 C++ ShootingCar.exe!ShootingCar::[Windows::ApplicationModel::Core::IFrameworkView]::Run() 第 69 行 C++ [外部代码] [下面的帧可能不正确和/或丢失,没有为 AppModelCore.dll 加载符号]

调用代码:

_tileMap = new CCTMXTiledMap();
_tileMap->initWithTMXFile("untitled.tmx");
addChild(_tileMap); 

发生崩溃:

bool CCTexture2D::hasPremultipliedAlpha()
{
    return m_bHasPremultipliedAlpha;
}

就像我提到的一些 tmx 文件在这个例子中工作得很好(我只是包含并使用这些文件)。但是对于我的 tmx 文件永远不会工作,总是崩溃。 我注意到一些 tmx 文件也像我的一样崩溃(一些在 cocos2d 包中)

【问题讨论】:

  • 上下文不足。发布调用堆栈和调用代码。当您访问其 hasPremultipliedAlpha getter 时,您访问的 Texture2D 对象似乎已被释放或未初始化。

标签: visual-studio-2012 cocos2d-x


【解决方案1】:

呃!经过反复试验,我注意到以下原因是根本原因。 如果选定的图块(png 文件)与保存 tmx 文件的目录不同,Tiled SW 在 XML 文件中添加相对路径。相对路径指向资源,这会导致问题。 在我的例子中,XML 文件包含以下内容:<image source="../TileGame/TileGame/Resources/TileGameResources/tmw_desert_spacing.png" width="265" height="199"/>

绘制地图时,png文件应该在同一个文件夹中,或者以后的XML文件可以通过删除相对路径来编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2018-03-26
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多