SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Ошибка _p!=nullptr. Урок 22 › Ответ в теме: Ошибка _p!=nullptr. Урок 22
Проблема решается заменой <tile/> на <tile gid=”0″/> в файле карты. Если вы используете последнюю версию tinyXML2 + Tiled то необходимо будет пошаманить с кодом. После 2 дней борьбы мне удалось сделать рабочий код.
Строки
C++
1 2 3 |
TiXmlDocument levelFile(filename.c_str());//загружаем файл в TiXmlDocument // загружаем XML-карту if (!levelFile.LoadFile())//если не удалось загрузить карту |
меняем на
C++
1 2 3 |
tinyxml2::XMLDocument levelFile; //Загружаем файл // Загружаем XML-карту if (levelFile.LoadFile(filename.c_str())) //Если не удалось загрузить карту |
Все слова TiXmlElement меняем на tinyxml2::XMLElement
Строки
C++
1 2 3 |
// работа со слоями TiXmlElement *layerElement; layerElement = map->FirstChildElement("layer"); |
меняем на
C++
1 2 3 4 5 |
// Работа со слоями tinyxml2::XMLElement *groupElement; groupElement = map->FirstChildElement("group"); tinyxml2::XMLElement *layerElement; layerElement = groupElement->FirstChildElement("layer"); |
Посмотрите если у вас в файле *tmx присутствует тэг “group” (в своей карте я группировал слои)
Строки
C++
1 2 3 4 5 6 |
// работа с объектами TiXmlElement *objectGroupElement; // если есть слои объектов if (map->FirstChildElement("objectgroup") != NULL) { objectGroupElement = map->FirstChildElement("objectgroup"); |
меняем на
C++
1 2 3 4 5 6 |
// Работа с объектами tinyxml2::XMLElement *objectGroupElement; // Если есть слои объектов if (groupElement->FirstChildElement("objectgroup") != NULL) { objectGroupElement = groupElement->FirstChildElement("objectgroup"); |
Если делаете свою карту в Tiled формат слоя тайлов необходимо выбрать XML и не переворачивайте тайлики, ибо у меня от этого gid = восьмизначному числу и прога крашилась!