Q:

Sprite mask collision doesnt work (rect collision works)

The collision works when I use:
pygame.sprite.collide_rect 

but it doesnt work when I use:
pygame.sprite.collide_mask 

Here are my 2 classes:
class Ball():
    def __init__(self):
        self.rect = balltexture.get_rect()
        self.rect.x=225
        self.rect.y=400
        self.radius = 100
        self.velx=0
        self.vely=0
        self.action=False
        self.switchx=0
        self.switchy=0        
        pygame.sprite. Sprite.__init__(self)
        self.mask = pygame.mask.from_surface(balltexture)
    def draw(self):
        win.blit(balltexture, self.rect)

class rock():
    def __init__(self, y):
        self.rect = rocktexture.get_rect()
        self.rect.x = screensize.current_w
        self.rect.y = y
        self.width = 120
        pygame.sprite. Sprite.__init__(self)
        self.mask = pygame.mask.from_surface(rocktexture)

    def draw(self, win):
        win.blit(rocktexture, self.rect)

and here is the collision check
for i in rocks:
    if pygame.sprite.collide_rect(i, Player):
        print(1)
        if pygame.sprite.collide_mask(i, Player):
            print(2)

So when they collide it prints 1 all the time. 
BTW I'm moving rect coordinates (e.g. Player.rect.x) to move the Player/rocks and I also tried the mask overlap method but it didn't work either
offset = (Player.rect.x-i.rect.x, Player.rect.y-i.rect.y)
if i.mask.overlap(Player.mask, offset):
    print(2)

A:

One of my images had no transparency, that was the problem

