Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 29.05.2009, 18:03
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 1  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
По умолчанию Формула расчета х-координаты перемещения элементов горизонтального меню

Привет!
Сделал менюшку, в которой элементы передвигаются горизонтально относительно мыши
Код AS1/AS2:
import mx.transitions.easing.Regular;
import gs.*;
 
var imagesAmount:Number = 30; // Кол-во картинок
var imageWidth:Number = 145; // Ширина картинки
 
var spaceWidth:Number = 10; // Ширина пробела
 
this.createEmptyMovieClip("nav_mc", this.getNextHighestDepth());
this.nav_mc._y = 6;
 
for (var counter:Number = 1; counter <= imagesAmount; counter++)
{
    this.nav_mc.attachMovie("image", "image" + counter, this.nav_mc.getNextHighestDepth());
    this.nav_mc["image" + counter]._x = (counter - 1) * (imageWidth + spaceWidth);
    this.nav_mc["image" + counter]._txt.text = counter;
}
 
this.onMouseMove = moveNav;
 
function moveNav():Void
{
    // Макс _х. При котором становится виден последний элемент
    var xMax:Number = -(this.nav_mc._width - Stage.width);
 
    // Коэффициент. 
    // Когда мышка в правом углу (к = 1) полностью виден последний элемент
    // Когда в левом углу (к = 0) полностью виден первый элемент
    var k:Number = _root._xmouse / Stage.width;
 
    var nextX:Number = xMax * k;
 
    TweenMax.to(this.nav_mc, 1, {_x: nextX, ease: Regular.easeOut});
    updateAfterEvent();
}
Все работает правильно, но есть неудобство: чтобы полностью увидеть первый или последний элементы, нужно переместить мышь до конца влево или вправо соответственно. Я хочу сделать немного поменьше "ход" мыши, скажем на 20 пикселей справа и слева, но при этом, чтобы на координате 20 и Stage.width-20 был уже полностью виден первый или последний элемент соответственно, и еще при этом независимо от кол-ва элементов, в чем вся сложность.

Пробовал прибавлять 20 увеличивать и уменьшать на 20 координату элементов, когда мышь соответственно левее/правее центра, но такой вариант не устраивает, т.к. когда мышь проходит центр будет наблюдаться резкий скачок элементов.
Пробовал делать отступы у nav_mc справа и слева, но не могу рассчитать ширину этого отступа, т.к. он зависит от кол-ва картинок.
Как его рассчитать или есть другие варианты?


Последний раз редактировалось Kuruki; 27.11.2009 в 01:25.
Создать новую тему   Часовой пояс GMT +4, время: 15:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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