Closed Ogimle closed 10 years ago
Да это интересный момент. Тоже с этим сталкивался и задумался как бы лучше сделать. Дело в том, что дефолтную камеру не следует создавать до того как был вызван метод create() иначе у пользователя не остается возможности создать свою камеру(ы) если это нужно. Решения тут два:
Первый вариант кажется более лояльным с моей точки зрения. Что думаете?
наверное лояльно, но мне кажется создаваться камеру вызовом метода против прямого вызова new избавит разве что от вызова antG.addCamera() и в любом случае стирает понятие "камера по умолчанию" ибо камера по умолчанию - это камера созданная автоматически. Если пользователю понадобилось переопределить дефолтную камеру, то мне кажется логичнее добавить метод AntG.addDefaultCamera(camera) который грохает камеру в индексе 0 (если есть) и ставит на него заказанную.
В общем долго я думал что делать с камерой. И самое оптимальное решение к которому я склоняюсь это: оставить все как есть :) Если пользователю нужна камера в методе create() то он должен создать её вручную. Если не нужна, то камера будет создана автоматически позже.
Но чтобы упростить создание камеры в методе create() я планирую добавить метод AntG.makeDefaultCamera(), который можно будет вызывать в методе create() чтобы немедленно создать камеру по умолчанию и получить к ней доступ на этапе инициализации игры.
ну я тоже думаю останусь при своем мнении, но при вашем решении :)
получил краш в методе состояния onLoadComplete когда попытался сделать
AntG.getCamera().setBounds(0, 0, 1112, 400);
Все дело в том что ваш AntG.switchState сначала создает и инициализирует состояние вызывая AntState.create, а только потом добавляет дефолтную камеру, что в итоге делает невозможным задать камере границы на этапе инициализации состояния, когда оно грузит графику и относительно нее настраивает камеру, разве что уже в реалтайме, где-нибудь в update через дополнительные флаги.
Тут либо убирать дефолтную камеру как недразумение однозначно потребовав, как раньше, создавать камеру каждому состоянию вручную, либо дефолтную камеру создавать до состояния, что я и сделал переставив вызов AntState.create в конец метода AntG.switchState, чтобы не было очередному пользователю повода для мытарств с дебагером.