FSClock3U
                  
Изометрия без localToGlobal и globalToLocal в Flash - 2 Марта 2009                    
Материалы по категориям
Продукты FSStar [26]
Музыка [2]
Наш файлообменник [4]
Новости извне [5]
Новости FSStar [15]
Официальные новости компании FSStar
Изометрия без localToGlobal и globalToLocal в Flash
17:05

Исходный код.
Повторяется из кадра в кадр.
Точка опоры сетки находится в левом-верхнем углу
Зеленая точка показывает перевод из серой в голубую, красная - наоборот.

Code
function globToGrid(a) { //Определяем обратнуй функцию (см. нормальную для объяснения)

    rot = Math.atan2(a.y/0.5, a.x);

    d = Math.sqrt(a.x*a.x+a.y/0.5*a.y/0.5);

    newr = rot-45/180*Math.PI;

    result = {x:Math.cos(newr)*d, y:Math.sin(newr)*d};

    return result;

}
function gridToGlob(a) { //Определяем функцию
  rot = Math.atan2(a.y, a.x); //Вычисляем угол к точке от точки опоры сетки
  d = Math.sqrt(a.x*a.x+a.y*a.y); //Вычисляем расстояние до точки
  newr = rot+45/180*Math.PI; //Прибавляем к углу угол поворота
  result = {x:Math.cos(newr)*d, y:Math.sin(newr)*d*.5}; //Получаем новую точку
  return result;
}
_root.createEmptyMovieClip("gridOne",1); //Создаем первую сетку
_root.gridOne._x = 400; //Двигаем ее на 400 пикселей вправо
_root.gridOne.lineStyle(1,0xAAAAAA,100); //Назначаем цвет, ширину и прозрачность линий
for (i=0; i<=400; i += 10) { //Рисуем сетку
  _root.gridOne.moveTo(i,0);
  _root.gridOne.lineTo(i,400);
}
for (i=0; i<=400; i += 10) {
  _root.gridOne.moveTo(0,i);
  _root.gridOne.lineTo(400,i);
}

_root.createEmptyMovieClip("gridTwo",2); //Создаем вторую сетку
_root.gridTwo._x = 400; //Сдвигаем ее на 400 пикселей вправо
_root.gridTwo.lineStyle(0.1,0x00FFFF,100); //Назначаем ширину, цвет и прозрачность линий

for (i=0; i<=400; i += 10) { //Рисуем сетку с применением нашей функции
  ponint = {x:i, y:0};
  ponint = gridToGlob(ponint);
  _root.gridTwo.moveTo(ponint.x,ponint.y);
  ponint = {x:i, y:400};
  ponint = gridToGlob(ponint);
  _root.gridTwo.lineTo(ponint.x,ponint.y);
}
for (i=0; i<=400; i += 10) {
  ponint = {x:0, y:i};
  ponint = gridToGlob(ponint);
  _root.gridTwo.moveTo(ponint.x,ponint.y);
  ponint = {x:400, y:i};
  ponint = gridToGlob(ponint);
  _root.gridTwo.lineTo(ponint.x,ponint.y);
}
point = gridToGlob({x:_root._xmouse-400, y:_root._ymouse}); //Ставим точку, имитирующую указатель мыши на второй сетке
_root.checker._x = point.x+400;
_root.checker._y = point.y;
point2 = gridToGlob({x:_root._xmouse-400, y:_root._ymouse}); //Ставим вторую точку, имитирующую указатель мыши на первой сетке.
_root.checker2._x = point2.x+400;
_root.checker2._y = point2.y;
Категория: Продукты FSStar | Просмотров: 834 | Добавил: fsstar | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Календарь Материалов
«  Март 2009  »
Пн Вт Ср Чт Пт Сб Вс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Всего на сайте: 1
Незаписанных: 1
Записанных: 0
RockOn forever | Сайт Erlikh ||| Наш файлообменник | eTorrent | WoWHead Russian | Warkeeper | Хитри - Блог о хитростях Flash-разработчиков

Сайт создан в системе uCoz