Я пишу простую игру, используя cocos2d с объективом-c. В этой игре я даю случайные позиции вражеским спрайтам. Чтобы избежать дублирования разных врагов, я пишу чек, чтобы убедиться, что CGRect нового спрайта с его случайным положением не перекрывается с другим CGRect спрайтов.Как получить размер CCSprite до его инициализации?
Мои вопросы: как вы можете получить размер CGRect перед инициализацией нового спрайта? И как это сделать, если вы используете файл ccbi (cocosbuilder) для инициализации спрайта?
Прежде чем инициализировать новый спрайт, я инициализирую временный спрайт с помощью файла png, который показывает первый кадр врага (каждый кадр имеет одинаковый размер). Затем просто используйте его размер следующим образом: tempSprite.boundingBox. Хотя он работает хорошо, я думаю, что это неэффективно, чтобы сделать tempSprite перед инициализацией всех новых спрайтов.
Теперь я пытаюсь преобразовать свою игру с помощью cocosbuilder (потому что использование ccbi-файла упрощает настройку анимации). Как узнать размер спрайта до инициализации? Я думаю, что я все еще могу сделать tempSprite, используя [CCBReader nodeGraphFromFile: @ "enemySprite.ccbi"] и используя tempSprite.boundingBox, чтобы получить его размер. Но правильно ли это сделать? Он очень бесполезен для ресурсов ЦП и памяти. update: Я пробовал свой путь, который не работает. Поскольку значение размера boundingBox равно (0,0) (правильное значение позиции).
Разве спрайты и кешируют уже спрайты? Если это так, то для инициализации не потребуется дополнительных ресурсов для получения размера. –
Да, я могу получить нужный размер из файла png, который является первым фреймом, например. Однако у меня была другая проблема. Поскольку размер файла ccbi равен 0, я не могу его трогать (прикосновение к текстуре не считается «затронутым»). – ArtS