Простой способ подумать о том, что большинство типов доступных объектов (таких как BitmapFonts и Sprites) сложны. Они обрабатывают вычисления своих собственных данных, поскольку они содержат несколько спрайтов или данных размера/ориентации/цвета/положения, поэтому вы передаете SpriteBatch в свои методы draw
, чтобы они могли обрабатывать передачу данных. Для SpriteBatch не было смысла (или быть очень объектно-ориентированным), чтобы знать, как получить данные из многих разных типов конкретных объектов.
Однако SpriteBatch знает, как обращаться с двумя простейшими объектами, текстурами и текстурными областями. Эти простые объекты не содержат никакой информации об их размере или ориентации или цвете, поэтому SpriteBatch может обрабатывать их и, при необходимости, вычислять дополнительные данные (поэтому SpriteBatch имеет так много перегруженных методов draw
).
Для текстуры не имеет смысла знать, как рисовать себя с помощью SpriteBatch, потому что это специализированный прецедент. Texture (и TextureRegion) - это обобщенный объект, который предназначен для использования в любых целях (3D-наклейки, обертывание 3D-модели, пользовательские реализации на пользовательской сетке и т. Д.), Поэтому было бы неразумно знать все возможные способы его привлечения и осуществления.
Если вы хотите, чтобы текстура могла иметь свой собственный метод draw(batch)
, вы должны подклассифицировать его, чтобы добавить это. (Но уже есть класс Sprite, который это сделал.)
Один из «полученных», чтобы следить за тем, что Sprite расширяет TextureRegion, поэтому вы можете случайно позвонить spriteBatch.draw(sprite)
и задаться вопросом, почему ваш спрайт не имеет размера или ориентирован правильно.
Кто-нибудь хочет сказать, почему это было приостановлено? Кажется, еще один разумный вопрос. – User