Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Динамика большого спрайта (http://www.flasher.ru/forum/showthread.php?t=171075)

Dr_Bra 08.11.2011 11:29

Динамика большого спрайта
 
Всем привет, как думаете по какому принципу делается движение этой галереи?
http://www.fieroanimals.com/

Genzo 08.11.2011 11:39

Чуть смещаются основные картинки, и за счет движения снега(снежинок) передается эффект перемещения.
ЗЫ Тему во флейм

Dr_Bra 08.11.2011 11:44

Анимация фона на главной странице меня не интересует, давайте гланем на галерею в этом сайте!
На сколько я понимаю, есть контиейнер в который загружается вся база картинок портфолио. Этот контейнер, например, имеет нулевые координаты по осям в левом верхнем углу. Контейнер с картинками двигается по очи Y относительно действия курсора.
Я пытаюсь найти эту формулу движение по оси Y.

Добавлено через 2 минуты
Как вы думаете tween-ами или на enterframe?

Добавлено через 5 минут
либо это реализуется вот таким принципом http://demiart.ru/forum/index.php?showtopic=73688

strangedk 08.11.2011 13:40

Какая еще формула, просто -height


Код AS3:

function onMouseMove_handler(event:MouseEvent):void {
    _sprite.y = stage.stageHeight - event.stageY;
}

где _sprite это контейнер с фото

з.ы.
Анимация на главной странице сделана по принципу Parallax

Dr_Bra 08.11.2011 19:44

Вложений: 1
Уважаемый Strangedk, если бы разработчики использовали просто -height, получилась бы лажа! =)

Нужно завести переменную, например, position. Position будет определять вектор движения.
Спрайт, который мы двигаем имеет нулевые координаты в левом верхнем углу. Поэтому заводим переменную centr_sprite ,к примеру!
Код AS3:

centr_sprite = _sprite.height/2 + _sprite.y;// максимальное значение _sprite.y = 0 в нашем случае

формула движения следующая
Код AS3:

position = stage.stageHeight/2 - (stage.mouseY - stage.stageHeight/2);        
_sprite.y += (position - centr_sprite)/10;// 10 – наша скорость

Но и это все работает не корректно! :( В зависимости от размера высоты сцены, либо спрайт двигается менше чем нужно, либо спрайт двигается больше чем нужно. НО когда курсор находится у самого края сцены по OY, границы спрайта находятся где угодно, кроме нужного положения.

Что вобщем говорить, лучше один раз посмотреть. Архив в аттаче.

KBAC 08.11.2011 20:11

Там всё просто. На MOUSE_MOVE делаем tween с easeOut меняя координату галереи. Например:
Код AS3:

newTargetY = stage.mouseY / stage.stageHeight * (stage.stageHeight - target.height);
TweenNano.to(target, 0.5, { y: newTargetY, ease:Expo.easeOut} );
// где target - объект галереи

update: вероятно у alatar корректнее: вместо stage.mouseY использовать e.stageY

alatar 08.11.2011 20:45

Код AS3:

private function stage_mouseMoveHandler(e:MouseEvent):void 
{
        _spr.y = (stage.stageHeight - _spr.height) * (e.stageY / stage.stageHeight);
}


Dr_Bra 22.11.2011 15:49

Цитата:

Сообщение от alatar (Сообщение 1044700)
Код AS3:

private function stage_mouseMoveHandler(e:MouseEvent):void 
{
        _spr.y = (stage.stageHeight - _spr.height) * (e.stageY / stage.stageHeight);
}




спасибо


Часовой пояс GMT +4, время: 14:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.