Почему приложение Kivy сокращено до Android, но не находится в разработке - PullRequest
0 голосов
/ 26 января 2020

У меня есть этот код, который работает как брелок на моей Linux машине (импорт пропущен):

class Background(Widget):

    def __init__(self, source):
        super(Background, self).__init__()
        self.image = Sprite(source=source)
        self.add_widget(self.image)
        self.size = self.image.size
        self.image_copy = Sprite(source=source, x=self.width)
        self.add_widget(self.image_copy)


class Sprite(Image):

    def __init__(self, **kwargs):
        super(Sprite, self).__init__(**kwargs)
        self.size = self.texture_size

class Game(Widget):

    def __init__(self):
        super(Game, self).__init__()
        self.background = Background(
            source='assets/images/bg.jpg')
        self.size = self.background.size


class TrackerWarsApp(App):

    def build(self):
        game = Game()
        Window.size = game.size
        return game

Это дает мне фон, приятно растянутый на ноутбуке, но когда я пытаюсь играть в игру в Android фоновое изображение телефона уменьшено.

Как мне устранить эту проблему?

Рекомендуемое изменение:

class Background(Widget):

    def __init__(self, source):
        super(Background, self).__init__()
        self.image = Sprite(source=source)
        self.image.allow_stretch = True   #  <==
        self.add_widget(self.image)
        self.size = self.image.size
        self.image_copy = Sprite(source=source, x=self.width)
        self.add_widget(self.image_copy)

другое редактирование :

class Background(Widget):

    def __init__(self, source):
        super(Background, self).__init__()
        self.image = Sprite(
            source=source, allow_stretch=True)
        self.add_widget(self.image)
        self.size = self.image.size
        self.image_copy = Sprite(
            source=source, allow_stretch=True, x=self.width)
        self.add_widget(self.image_copy)


class Sprite(Image):

    def __init__(self, **kwargs):
        super(Sprite, self).__init__(**kwargs)
        self.size = self.texture_size
        x, y = dp(self.size[0]), dp(self.size[1])
        self.size = (x, y)
        self.size_hint = (None, None)

class Game(Widget):

    def __init__(self):
        super(Game, self).__init__()
        self.background = Background(
            source='assets/images/bg.jpg')
        self.size = self.background.size
        self.add_widget(self.background)

class TrackerWarsApp(App):

    def build(self):
        game = Game()
        Window.size = game.size
        self.icon = 'assets/images/logo.png'
        return game

Здесь я пытаюсь преобразовать размер всех спрайтов (включая фоновое изображение) в независимые от пикселей значения. У меня перегруженный фон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...