2016-10-23 8 views
0

Я пытался вырезать лист спрайта и по какой-то причине вне меня результат всегда был пустым.SKTexture in: texture дает пустой результат

Можно было бы подумать, что приведенное ниже даст вам половину левой части изображения.

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) 

Это, однако, дает пустые результаты из-за вывода типа, говоря, что результаты должны быть ИНТ следуют некоторые прискорбно округление 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 с точным поплавком вместо округленного int.

+0

Это не проблема с CGRect, это проблема с тем, что вы не указали, что такое 1 и 2, поэтому компилятор будет считать Int, когда нет десятичных знаков, потому что Int является самым быстрым типом для работы с – Knight0fDragon

+0

@ Knight0fDragon Конечно, я понимаю, что происходит. Просто то, что я ударил головой о стену, надеясь спасти кого-то еще. Во многих местах можно было столкнуться с этим, но в этом конкретном случае это было немного сложно реализовать из-за молчаливого сбоя и ничего на экране. – GOR

+1

Я просто уточнил, почему у вас есть ошибка, которую вы получили. – Knight0fDragon

 Смежные вопросы

  • Нет связанных вопросов^_^