Показать сообщение отдельно
Старый 13.09.2015, 10:36
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Что-то я не понял каким боком сюда MVC относится вообще)
Ну, разве что передавать данные о положении карты и персонажа модели, а модель будет рассылать всем вьюшкам.
Но как я понял, вопрос то не в этом, а в том как вообще сделать мини карту, и чтобы персонаж на ней так же пропорционально располагался как и на большой.

Код для рассчета расстояний будет примерно таким. Допустим масштаб 1:20
Берем большую карту, и создаем на ее основе маленькую превьюшку

Код AS3:
// перед созданием превью надо скрыть всех персонажей и прочие игровые объекты с карты, допустим сделать сеттер hideGameObjects
map.hideGameObjects = true;
var scale:Number= 20;
var previewWidth:int = map.width / scale;
var previewHeight:int = map.height / scale;
var preview:Bitmap = new Bitmap(new BitmapData(previewWidth, previewHeight, true, 0x000000));
var mapX:int = map.x;
var mapY:int = map.y;
var mapScale:Number = map.scaleX;
map.scaleX /= scale; 
map.scaleY = map.scaleX;
map.x = map.y = 0;
preview.bitmapData.draw(map, map.transform.matrix);
// возвращаем как было
map.x = mapX;
map.y = mapY;
map.scaleX = map.scaleY = mapScale;
// дальше ложим эту привьюшку в свой контейнер
previewContainer.addChild(preview);
// ну и, собственно рассчитываем положение персонажа в ней, тоже деля его на глобальный масштаб
// допустим данные о положении карты и персонажа присылает в это мини превью модель
preview.x = mapPositionX / scale;
preview.y = mapPositionY / scale;
// ну и так же для персонажа