2017-07-24 54 views
1

SKAction.animate方法没有正确动画,我如何使它正常工作。SKAction.animate与SKTextureAtlas方法不起作用

例动画制作方法:

let textureAtlas = SKTextureAtlas(named: "example") 
    var textureArray = [SKTexture]() 
    var frames:[SKTexture] = [] 
    for index in 1 ... 4 { 
     let textureName = "example_\(index)" 
     let texture = textureAtlas.textureNamed(textureName) 
     frames.append(texture) 
     textureArray = frames 
     print("worked") 
    } 
    let animate = SKAction.animate(with: textureArray, timePerFrame: 0.01) 
    let forever = SKAction.repeatForever(animate) 
    self.run(forever) 

其打印“工作”,但在我的场景其显示红色的X图像时SpriteKit找不到请求的图像你。有什么我做错了吗?

在此先感谢!

回答

0

请勿使用SKTextureAtlas。

尝试:

斯威夫特3:

var textureArray = [SKTexture]() 
    for index in 1 ... 4 { 
     let textureName = "example_\(index)" 
     let texture = SKTexture(imageNamed: textureName) 
     textureArray.append(texture) 
    } 
    let animate = SKAction.animate(with: textureArray, timePerFrame: 0.01) 
    let forever = SKAction.repeatForever(animate) 
    self.run(forever) 
+1

它的伟大工程!非常感谢!!! – Anonymous

+0

这是不好的建议,他们应该修复他们的纹理地图集并使用它。纹理图集旨在减少应用程序的内存足迹。 – Knight0fDragon

+0

@ Knight0fDragon我不同意,你可以上传一个例子吗? – Maetschl

0

红色的X意味着你的纹理图集是不是设置正确,请检查您的xcassets文件夹,以确保您的纹理设置。

它应该是这个样子:

enter image description here

+0

我认为textureAtlas本意是在侧视文件访问thingy – Anonymous

+0

纹理地图集将你所有的小纹理转化为1巨大的质感。我喜欢把它称为一个巨大的纹理 – Knight0fDragon

+0

我刚刚意识到你说的话。你的意思是在项目视图中。不,这是在XCAssets – Knight0fDragon