2017-03-14 2 views
0

Y at-il un moyen d'affecter l'attribut filteringMode à SKTextureFilteringMode.nearest pour TOUS SKTextures? Autre que d'attribuer à chaque texture individuellement. Ce qui suit fonctionne bien, mais je préférerais ne pas avoir à parcourir les textures, mais juste définir une valeur par défaut pour le mode de filtrage. Est-ce possible?Modifier SKTextureFilteringMode pour tous les SKTextures

func walk() -> SKAction { 

    let walkTexture1 = SKTexture(imageNamed: "walk1.png") 
    let walkTexture2 = SKTexture(imageNamed: "walk2.png") 
    let walkTexture3 = SKTexture(imageNamed: "walk3.png") 
    let walkTexture4 = SKTexture(imageNamed: "walk4.png") 
    let walkTexture5 = SKTexture(imageNamed: "walk5.png") 


    let animationTextures: [SKTexture] = [walkTexture1, walkTexture2, walkTexture3, walkTexture4, walkTexture5] 

    for texture in animationTextures { 
     texture.filteringMode = SKTextureFilteringMode.nearest 
    } 

    let walkAnimation = SKAction.animate(with: animationTextures, timePerFrame: 0.3/5) 

    return walkAnimation 

Répondre

1

créer des textures et définir les propriétés dans la même boucle

let textures = (1...5).map { let texture = SKTexture(imageNamed: "walk\($0).png") texture.filteringMode = SKTextureFilteringMode.nearest return texture }

ou seulement des propriétés définies à l'aide forEach

textures.forEach { $0.filteringMode = .nearest }

+0

S'il vous plaît ajouter quelques explications à votre réponse. – Sampada

1

Vous pourriez peut-être faire une extension à SKTexture, quelque chose comme ceci:

extension SKTexture { 
    class func pixeled(imageNamed imageName: String) -> SKTexture { 
     let texture = SKTexture(imageNamed: imageName) 
     texture.filteringMode = .nearest 
     return texture 
    } 
} 

Ensuite, vous ont tout simplement

let walkTexture1 = SKTexture.pixeled(imageNamed: "walk1.png") 

etc.