У меня есть базовый класс под названием SpriteSheet, у которого есть два дочерних элемента, RotatedSpriteSheet и FlippedSpriteSheet. SpriteSheet содержит кадры, RotatedSpriteSheet содержит эти кадры + кадры для поворотов, а FlippedSpriteSheet содержит исходные кадры + перевернутые кадры.
У меня есть другой класс под названием Sprite, который ссылается на SpriteSheet. Sprite сохраняет свою позицию, текущий кадр анимации, угол наклона, независимо от того, перевернуто изображение или нет, и т. Д. Когда Sprite обновляет свою анимацию, он выполняет вызов, подобный:
imageData = _spriteSheet.calculateFrame(animationFrame, flipped, angle);
Как видите, это довольно глупый дизайн, потому что SpriteSheet не должен иметь функцию, которая запрашивает перевернутое или угловое значение, если базовый класс SpriteSheet не использует эти данные.
Я думаю, что проблема связана с тем, что я не хочу иметь несколько объектов «Sprite», таких как RotatedSprite, AlphadSprite, FlippedSprite, FlippedAndRotatedSprite ... это кажется слишком громоздким.
Единственное решение, которое я могу придумать, состоит в том, что вместо CalculateFrame (), берущего кадр анимации, перевернутое состояние и угол, я мог бы передать ему ссылку на объект Sprite и позволить SpriteSheet (и его дочерним элементам) «проверять» Спрайт и вычислите сами данные. Проблема с этим дизайном состоит в том, что я должен был бы сделать дополнительные данные общедоступными, которые являются локальными только для спрайта (главным образом, для данных анимации). Я не думаю, что это так важно. Это лучшее решение?
Спасибо за ваши советы и предложения.