-Рубрики

 -Всегда под рукой


Создание панорамы на флеш.

Четверг, 27 Ноября 2014 г. 10:51 + в цитатник
Цитата сообщения здесь_нет_никого Создание панорамы на флеш.



Создание горизонтальной панорамы на AS2 в Adobe Flash CS6.

Создаем ActionScript 2,выставляем нужные размеры,у меня например 600х450.
Создаем новый слой,называем его окно(window)
Рисуем прямоугольную область,я делала без обводки,выставляем размеры и выравниваем,выделяем и преобразовываем в мувик с точкой привязки в левом верхнем углу.В свойствах прописываем имя window.


Выделив на сцене наше окно,открываем действия и прописываем скрипт:


onClipEvent (mouseMove)
{
if (!_root.bMouseAction)
{
return;
} // end if
mouse_x = this._xmouse;
mouse_y = this._ymouse;
if (getProperty(this, _height) < mouse_y || getProperty(this, _width) < mouse_x || mouse_y < 0 || mouse_x < 0)
{
_root.bMoveV = false;
_root.bMoveSpeedH = _root.bNormalMoveSpeedH;
_root.bMoveSpeedV = _root.bNormalMoveSpeedV;
return;
} // end if
_root.bMoveH = true;
center_x = getProperty(this, _width) / 2;
if (mouse_x < center_x)
{
_root.bRight = true;
_root.bMoveSpeedH = _root.bMaxMoveSpeedH * (center_x - mouse_x) / center_x;
}
else
{
_root.bRight = false;
_root.bMoveSpeedH = _root.bMaxMoveSpeedH * (mouse_x - center_x) / center_x;
} // end else if
center_y = getProperty(this, _height) / 2;
if (mouse_y < center_y)
{
_root.bDown = true;
_root.bMoveSpeedV = _root.bMaxMoveSpeedV * (center_y - mouse_y) / center_y;
}
else
{
_root.bDown = false;
_root.bMoveSpeedV = _root.bMaxMoveSpeedV * (mouse_y - center_y) / center_y;
} // end else if
}


Далее создаем два слоя -картинка 1 и картинка 2, картинка 1 должна стоять над слоем картинка 2(смотрим скрин)


Помещаем на сцену заготовленную панораму,в сети полно,но учитывайте,чтоб края совпадали,иначе будет виден стык,я предварительно подготовила в фотошопе.
Итак картинку выравниваем по центру,выделив, преобразовываем в мувик(имя любое,но чтоб не путаться назовите картинка 1),'точка привязки левый верхний угол',прописываем в свойствах photo1
Далее переходим на слой картинка 2 и на сцену переносим символ картинка 1(в любое место кидаем за сцену и в свойствах прописываем имя photo2 (см.скрины)



Далее дублируем слой окно(window),переносим его выше над картинками и переименовываем в маска,вот такой получается вид сцены.
Кликаем правой кнопой по слою маска и ставим галочку 'маска',затем слой картинка 2 тоже переносим под слойкартинка 1 с маской,см.скрин.

Переходим к слою AS,выделив первый кадр открываем действия и прописываем скрипт:


_root.bMoveH = true;
_root.bRight = true;
_root.bMaxMoveSpeedH = 15;
_root.bNormalMoveSpeedH = 5;
_root.bMoveSpeedH = bNormalMoveSpeedH;
_root.bMoveV = false;
_root.bDown = false;
_root.bMaxMoveSpeedV = 2;
_root.bNormalMoveSpeedV = 1;
_root.bMoveSpeedH = bNormalMoveSpeedV;
_root.photo_left = "photo1";
_root.photo_right = "photo2";
_root.bMouseAction = true;
photo1_x = getProperty("photo1", _x);
photo1_width = getProperty("photo1", _width);
photo1_height = getProperty("photo1", _height);
photo1_y = getProperty("photo1", _y);
win_x = getProperty("window", _x);
win_width = getProperty("window", _width);
win_y = getProperty("window", _y);
win_height = getProperty("window", _height);
if (win_width < photo1_width)
{
setProperty("photo2", _x, photo1_x + photo1_width);
}
else
{
_root.bMoveH = false;
setProperty("photo1", _x, win_x + win_width / 2 - photo1_width / 2);
_root.bMouseAction = false;
} // end else if
setProperty("photo1", _y, win_y + win_height / 2 - photo1_height / 2);
setProperty("photo2", _y, win_y + win_height / 2 - photo1_height / 2);

Затем переходим на кадр 3,вставляем пустой ключевой кадр и выделив его прописываем в действиях скрипт :


function swapToLeft(bToLeft)
{
photo_width = getProperty(_root.photo_left, _width);
left_x = getProperty(_root.photo_left, _x);
right_x = getProperty(_root.photo_right, _x);
if (bToLeft)
{
setProperty(_root.photo_right, _x, left_x - photo_width);
}
else
{
setProperty(_root.photo_left, _x, right_x + photo_width);
} // end else if
tmp = _root.photo_right;
_root.photo_right = _root.photo_left;
_root.photo_left = tmp;
} // End of the function
function moveH(ifRight, sizeMove)
{
left_x = getProperty(_root.photo_left, _x);
right_x = getProperty(_root.photo_right, _x);
width = getProperty(_root.photo_left, _width);
win_x = getProperty("window", _x);
win_width = getProperty("window", _width);
if (ifRight)
{
left_x = left_x + sizeMove;
right_x = right_x + sizeMove;
setProperty(_root.photo_left, _x, left_x);
setProperty(_root.photo_right, _x, right_x);
if (win_x < left_x)
{
swapToLeft(true);
} // end if
}
else
{
left_x = left_x - sizeMove;
right_x = right_x - sizeMove;
setProperty(_root.photo_left, _x, left_x);
setProperty(_root.photo_right, _x, right_x);
if (right_x < win_x)
{
swapToLeft(false);
} // end if
} // end else if
} // End of the function
function moveV(ifDown, sizeMove)
{
y = getProperty(_root.photo_left, _y);
height = getProperty(_root.photo_left, _height);
win_y = getProperty("window", _y);
win_height = getProperty("window", _height);
if (bDown)
{
if (y < win_y)
{
y = win_y < y + bMoveSpeedH ? (win_y) : (y + sizeMove);
} // end if
}
else if (win_y + win_height < y + height)
{
y = y - sizeMove + height < win_y + win_height ? (win_y + win_height - height) : (y - sizeMove);
} // end else if
setProperty(_root.photo_left, _y, y);
} // End of the function
if (_root.bMoveH)
{
moveH(bRight, bMoveSpeedH);
} // end if
if (_root.bMoveV)
{
moveV(bDown, bMoveSpeedV);
} // end if
gotoAndPlay(2);


Продляем ниже лежащие слои до третьего кадра нажав F5
Временная шкала должна выглядеть,как на скрине .


Все,тестируем ролик.


Удачи в творчестве.
Светлана
Рубрики:  Флеш/Уроки флеш
Флеш/Adobe Flash

Понравилось: 4 пользователям