首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >派葛斯的弧线将被用作精灵

问派葛斯的弧线将被用作精灵
EN

Stack Overflow用户
提问于 2015-02-19 00:10:01
回答 1查看 155关注 0票数 0

我试图使用pygame.draw.arc()作为雪碧,但它没有显示在屏幕上。我可以通过在主循环中编写相同的代码来达到同样的效果,但是一旦我尝试创建一个sprite,效果就不会显示出来。

(主循环中的一个部分也可以不加注释,以看到所期望的效果。)

任何指点都可能有很大帮助。

代码语言:javascript
复制
import pygame
import random
import math


BLACK    = (   0,   0,   0)
WHITE    = ( 255, 255, 255)
RED      = ( 255,   0,   0)

SCREEN_WIDTH = 513
SCREEN_HEIGHT = 513
class Block(pygame.sprite.Sprite):
    def __init__(self, color, width, height):
        pygame.sprite.Sprite.__init__(self)

        self.color = color
        self.image = pygame.Surface([width, height])

        self.image.fill(WHITE)
        self.image.set_colorkey(WHITE)

        self.center_x = SCREEN_WIDTH/2-15
        self.center_y = SCREEN_HEIGHT/2-15
        # Draw the ellipse, THIS WORKS PERFECTLY
        #pygame.draw.ellipse(self.image, color, [0, 0, width, height])

        self.i=0
        #THIS DOESN'T WORK FOR SOME REASON
        pygame.draw.arc(self.image, (0,255,255),(25,25,450,450),0+(self.i*math.pi)/180,math.pi/6 +(self.i*math.pi)/180,10)
        self.rect = self.image.get_rect()
        self.angle = 0
        self.radius = 210
        self.speed = 0.05

    def update(self):
        self.i += self.speed


pygame.init() 
screen = pygame.display.set_mode([SCREEN_WIDTH, SCREEN_HEIGHT])

all_sprites_list = pygame.sprite.Group()

block = Block(BLACK, 20, 15) 
all_sprites_list.add(block) 

done = False

clock = pygame.time.Clock()
i=0
while not done:
    for event in pygame.event.get():  
        if event.type == pygame.QUIT: # 
            done = True  
    screen.fill(WHITE)
    all_sprites_list.update()

    all_sprites_list.draw(screen)

    #UNCOMMENT TO SEE THE DESIRED EFFECT
    #i= i+1
    #pygame.draw.arc(screen, (0,255,255),(25,25,450,450),0+(i*math.pi)/180,math.pi/6 +(i*math.pi)/180,10)
    pygame.display.flip() 
    clock.tick(60)

pygame.quit()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 09:55:10

你把弧线画在表面外面。

在这里,将20和15的值传递给Block

代码语言:javascript
复制
block = Block(BLACK, 20, 15) 

因此,您创建了一个大小为Surface的20, 15

代码语言:javascript
复制
self.image = pygame.Surface([width, height])

然后在25,25,450,450区域画出弧线

代码语言:javascript
复制
pygame.draw.arc(self.image, (0,255,255),(25,25,450,450),0+(self.i*math.pi)/180,math.pi/6 +(self.i*math.pi)/180,10)

但是这个区域在地表之外,因为它只有20个像素宽和15个像素高。

您传递给pygame.draw.arc的区域相对于self.image。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28596426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档