2017-07-24 53 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