Ошибка атрибута при попытке получить imagebygid в pyTMX

#python #python-3.x #pygame #pytmx

#python #python-3.x #pygame #pytmx

Вопрос:

Я пытаюсь загрузить карту TMX для проекта в pyGame. Карта загружается нормально, когда я не добавляю объекты. Я использую Tiled для создания карт. Когда я это делаю, я получаю ошибку атрибута.

Я пытался переустановить pytmx и пробовал с другими картами, но, похоже, ничего не работает.

 def gameStart():
    game = True

    tm = pytmx.load_pygame('resources/maps/map1/map.tmx')
    size = tm.width * tm.tilewidth, tm.height * tm.tileheight

    tmx_data = tm

    tw = tmx_data.tilewidth
    th = tmx_data.tileheight
    gt = tmx_data.getTileImageByGid

    while game:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        if tmx_data.background_color:
            screen.fill(tmx_data.background_color)

        for layer in tmx_data.visibleLayers:
            if isinstance(layer, pytmx.TiledLayer):
                for x, y, gid in layer:
                    tile = gt(gid)
                    if tile:
                        screen.blit(tile, (x * tw, y * th))

            elif isinstance(layer, pytmx.TiledObjectGroup):
                pass

            elif isinstance(layer, pytmx.TiledImageLayer):
                image = gt(layer.gid)
                if image:
                    screen.blit(image, (0, 0))



        pygame.display.update()

        clock.tick(framerate)
  

Который возвращает следующее:

 File "main.py", line 45, in gameStart
    gt = tmx_data.getTileImageByGid
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pytmx/pytmx.py", line 214, in __getattr__
    raise AttributeError
AttributeError
  

Комментарии:

1. откуда вы получили информацию о getTileImageByGid ? Вы проверили документацию ? Кажется, у него может быть другое имя — аналогично другому методу get_tile_properties_by_gid .

Ответ №1:

Прочитайте документацию, у нее другое имя: get_tile_image_by_gid(gid)


В следующий раз вы можете проверить print( dir(tmx_data) ) , чтобы увидеть все методы и свойства в tmx_data