【问题标题】:Pygame being really slow blitting images on androidPygame 在 android 上的 blitting 图像真的很慢
【发布时间】:2017-02-17 00:17:11
【问题描述】:

我正在尝试使用 pygame 和 pygame_sdl2 为 android 制作游戏,然后使用 pgs4a 将其编译为 apk。

我一开始使用.fill() 作为背景,它工作正常,但是当我尝试将图像作为背景时,我的程序在我的手机上变得非常滞后。在 PC 上一切正常。

这是我的代码。

它只是简单地显示您的手指位置并计算您触摸屏幕的次数。

import pygame_sdl2
pygame_sdl2.import_as_pygame()

import pygame
import os

def main():
    pygame.init()
    screen = pygame.display.set_mode((360,640))
    sleeping = False
    running = True
    clock = pygame.time.Clock()
    font = pygame.font.Font("data/DejaVuSans.ttf", 48)
    background = pygame.image.load("image/background.jpg").convert()
    background = pygame.transform.scale(background, (screen.get_width(),screen.get_width()))
    press = 0

    while running:
        clock.tick(60)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                running = False
            elif event.type == pygame.KEYDOWN and event.key == pygame.K_AC_BACK:
                running = False

            elif event.type == pygame.APP_WILLENTERBACKGROUND:
                sleeping = True
            elif event.type == pygame.APP_DIDENTERFOREGROUND:
                sleeping = False
                screen = pygame.display.set_mode((360,640))

            elif event.type == pygame.FINGERDOWN:
                press += 1

        if not sleeping:
            x, y = pygame.mouse.get_pos()
            screen.blit(background, (0.5*(screen.get_width()-background.get_width()),0.5*(screen.get_height()-background.get_height())))
            text = font.render(str((x,y,press)), True, (255,255,255))
            screen.blit(text, (0.5*(screen.get_width()-text.get_width()),0.5*(screen.get_height()-text.get_height())))
            pygame.display.flip()

if __name__ == "__main__":
    main()

我见过很多人通过 pygame 制作他们的游戏,并且似乎运行良好。我的代码有什么问题或我必须做的事情吗?

【问题讨论】:

    标签: android pygame


    【解决方案1】:

    Android 上的 pygame_sdl2 有其他行为!

    screen = pygame.display.set_mode((360,640))
    

    在 Windows 上,此行创建一个大小为 360x640 的窗口。

    在 Android 上,窗口始终以设备本机分辨率全屏显示。例如:1080x1920。

    因此,Windows 上的位图绘制需要 360x640 = 230400 像素。

    在 Android 上:1080x1920 = 2073600 像素要绘制,这是 9 倍。

    我也有同样的问题!我在 github 上询问了开发人员。但仍然没有令人满意的解决方案。 https://github.com/renpy/pygame_sdl2/issues/69

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 2023-01-03
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-13
      相关资源
      最近更新 更多