Xpoint
   [напомнить пароль]

как сделать маску на панораму в виде "рыбьего глаза" ?

Метки: [без меток]
2008-05-05 12:41:19 [обр] Александр[досье]
Есть панорама сделанная во flash c простейшим actionscript-от (двигаеться от мышки: в влево,в вправо,в вверх,в вниз). Как сделать маску на панораму в виде "рыбьего глаза" чтобы усилить эффект реальности?
спустя 11 часов [обр] Алексей В. Иванов(276/2861)[досье]
Полагаю, что раз уже всё двигается, то позицию мыши вычислять получается. Осталось вывести формулу для рассчёта масштаба от расстояния. Тут могут быть варианты. Всё зависит от вашей фантазии только.
Не проверял, но что-то вроде такого я бы написал:
// Функция рассчёта размера картинки по удалённости от неё мыши
// imageX, imageY - координаты центра картинки
// возвращает значение от 1.0 до 1.5
function getScale(mouseX, mouseY, imageX, imageY) {
    var dx = mouseX - imageX;
    var dy = mouseY - imageY;
    var thumbWidth = 100;  // Размер картинок
    var s = thumbWidth / Math.sqrt(dx*dx + dy*dy); // В AS3 нужно предусмотреть деление на ноль
    return Math.max(1.0, Math.min(1.5, s));
}
спустя 18 часов [обр] Александр[досье]
А как обратиться к масштабу? Масштаб это размер картинки менять или это во флеш есть масштаб отображения картинки?
спустя 13 минут [обр] Александр[досье]
сообщение промодерировано
ТО ЧТО У МЕНЯ НАПИСАНО
// Функция рассчёта размера картинки по удалённости от неё мыши
// imageX, imageY - координаты центра картинки
// возвращает значение от 1.0 до 1.5
function getScale(mouseX, mouseY) {
    var dx = mouseX - 250;
    var dy = mouseY - 150;
    var thumbWidth = 100;  // Размер картинок
    var s = thumbWidth / Math.sqrt(dx*dx + dy*dy); // В AS3 нужно предусмотреть деление на ноль
    return Math.max(1.0, Math.min(1.5, s));
}

onClipEvent (enterFrame)
{
   var mahtab //коэффициент маштаба
   var xmouseoffset = 250;
   var ymouseoffset = 150;
   var xcoord = (_root._xmouse-xmouseoffset)*0.07;
   var ycoord = (_root._ymouse-ymouseoffset)*0.04;
   
   mahtab = getScale(_root._xmouse, _root._ymouse);
   //а что с этим коэффицентом дальше делать не знаю
   with (this)
   {
      //x
      if (_x>=0)
      {
         _x = -3384;
         _x -= xcoord;
      }
      else if (_x<=-3384)
      {
         _x = 0;
         _x -= xcoord;
      }
      else 
      {
         _x -= xcoord;
      }
      //y
      if (_y>= 0)
      {
         _y = 0;
         _y -= ycoord;
      }
      else if (_y<= -180)
      {
         _y = -180;
         _y -= ycoord;
      }
      else
      {
         _y -= ycoord;
      }
   }
}
спустя 1 минуту [обр] Александр[досье]
Кстати как сделать чтобы в форуме код выделялся?
спустя 5 часов [обр] Алексей В. Иванов(276/2861)[досье]

Масштаб MovieClip можно менять с помощью _xscale и _yscale.
Пример:

_xscale = _yscale = 100 * getScale(...

Про форматирование сообщений написано здесь.

спустя 9 часов [обр] Александр[досье]
Получилось не так как я хотел, увеличивается вся картинка равномерно. А я хотел чтобы, как в эффекте "рыбьего глаза".
спустя 1 час 55 минут [обр] Алексей В. Иванов(276/2861)[досье]
"Впуклая" картинка? Практически нереально.
спустя 1 день 1 час [обр] Александр[досье]
Спасибо!
Powered by POEM™ Engine Copyright © 2002-2005