2016-10-23 67 views
0

我試圖剪切精靈表並出於某種原因超出我的結果總是空的。SKTexture中:紋理產生空結果

有人會認爲下面會給你一半圖像的左下角四分之一。

let allTex = SKTexture(imageNamed: "zelda") 
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1/2, height: 1/2), in: allTex) 

然而,這給出了空的結果。

回答

1

問題是CGRect使用了錯誤的初始化程序。有人會認爲下面的圖片會給你一半左下角的圖像。

let allTex = SKTexture(imageNamed: "zelda") 
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1/2, height: 1/2), in: allTex) 

然而,這使由於類型推斷說結果應該是int,隨後的1/2一些不幸的四捨五入爲0。爲了解決空結果這個做到這一點,而不是:

let allTex = SKTexture(imageNamed: "zelda") 
let standTex = SKTexture(rect: CGRect(x: 0, y:0, width: 1.0/2.0, height: 1.0/2.0), in: allTex) 

這迫使計算結果爲0.5倍,然後最終使用精確浮點數而不是四捨五入整數的CGRect。

+0

這不是CGRect的問題,這是你沒有指定什麼1和2的問題,所以當沒有小數時,編譯器會假定爲Int,因爲Int是最快的類型與 – Knight0fDragon

+0

@ Knight0fDragon當然,我明白髮生了什麼事。只是我把頭撞在牆上,所以希望能拯救別人。人們可以在很多地方遇到這種情況,但在這種特殊情況下,由於無聲失敗和屏幕上沒有任何事情,有點難以實現。 – GOR

+1

我只是澄清你爲什麼得到你得到的錯誤。 – Knight0fDragon