AntKarlov / Anthill-Framework

Tiny framework for creating Flash games.
57 stars 16 forks source link

Курица или яйцо... вот в чем вопрос :) #8

Closed Ogimle closed 10 years ago

Ogimle commented 11 years ago

получил краш в методе состояния onLoadComplete когда попытался сделать

AntG.getCamera().setBounds(0, 0, 1112, 400);

Все дело в том что ваш AntG.switchState сначала создает и инициализирует состояние вызывая AntState.create, а только потом добавляет дефолтную камеру, что в итоге делает невозможным задать камере границы на этапе инициализации состояния, когда оно грузит графику и относительно нее настраивает камеру, разве что уже в реалтайме, где-нибудь в update через дополнительные флаги.

Тут либо убирать дефолтную камеру как недразумение однозначно потребовав, как раньше, создавать камеру каждому состоянию вручную, либо дефолтную камеру создавать до состояния, что я и сделал переставив вызов AntState.create в конец метода AntG.switchState, чтобы не было очередному пользователю повода для мытарств с дебагером.

AntKarlov commented 11 years ago

Да это интересный момент. Тоже с этим сталкивался и задумался как бы лучше сделать. Дело в том, что дефолтную камеру не следует создавать до того как был вызван метод create() иначе у пользователя не остается возможности создать свою камеру(ы) если это нужно. Решения тут два:

  1. Вызывать метод создания дефолтной камеры врунчную.
  2. Добавить событие на которое можно подписаться и получить уведомление о создании камеры.

Первый вариант кажется более лояльным с моей точки зрения. Что думаете?

Ogimle commented 11 years ago

наверное лояльно, но мне кажется создаваться камеру вызовом метода против прямого вызова new избавит разве что от вызова antG.addCamera() и в любом случае стирает понятие "камера по умолчанию" ибо камера по умолчанию - это камера созданная автоматически. Если пользователю понадобилось переопределить дефолтную камеру, то мне кажется логичнее добавить метод AntG.addDefaultCamera(camera) который грохает камеру в индексе 0 (если есть) и ставит на него заказанную.

AntKarlov commented 10 years ago

В общем долго я думал что делать с камерой. И самое оптимальное решение к которому я склоняюсь это: оставить все как есть :) Если пользователю нужна камера в методе create() то он должен создать её вручную. Если не нужна, то камера будет создана автоматически позже.

Но чтобы упростить создание камеры в методе create() я планирую добавить метод AntG.makeDefaultCamera(), который можно будет вызывать в методе create() чтобы немедленно создать камеру по умолчанию и получить к ней доступ на этапе инициализации игры.

Ogimle commented 10 years ago

ну я тоже думаю останусь при своем мнении, но при вашем решении :)