我正在尝试使用 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_sdl2 有其他行为!
screen = pygame.display.set_mode((360,640))
在 Windows 上,此行创建一个大小为 360x640 的窗口。
在 Android 上,窗口始终以设备 native 分辨率全屏显示。例如:1080x1920。
因此,Windows 上的 blitting 需要 360x640 = 230400 像素来绘制。
在 Android 上:1080x1920 = 要绘制 2073600 像素,是原来的 9 倍。
我也遇到了同样的问题!我问了github上的开发者。但仍然没有令人满意的解决方案。 https://github.com/renpy/pygame_sdl2/issues/69
关于android - Pygame 在 Android 上发送图像真的很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41566117/