PDA

Просмотр полной версии : Передвижение объекта


makc.k
27.08.2008, 13:42
Добрый день.

Столкнулся с таким сложным ( покрайне мере для меня) вопросом.

Что дано:

Размер флешки: 1024х768
Размер Объекта во флеше : 12000x768 px
Мышка


Задача:
Надо реализовать передвижение Объекта размером 12000x768px внутри флешки. Двигаеться этот объект должен тогда когда мышку двигают направо или налево.

Передвижение объекта должно происходить 1:1, т.е если я подвинул мышку направо, то он должен сдвинуться влево. Как только движение мышки остановилось объект тоже должен остановиться.

Вроде кажется все просто но я не понимаю как сделать так что бы объект который передвигается внутри флешки у которой размер 1024х768 а сам объект размеров 12000х768 передвигался до конца.

Мышка упрется в рамку флеша и передвижение объекта остановится.
Нельзя делать скрол с ускорением, должно все работать симметрично, насколько сдвинулась мышка настолько должен сдвинуться и объект.

Для наглядности приложил картинки.

altoff
28.08.2008, 13:02
Короче создаешь в библиотеке два клипа
pic (в нее суешь картинку 12000x768) и mask (рисуешь квадрат 1024х768)
потом правой кнопкой по клипу, выбираешь Linkage... и там ставишь галочку Export for ActionScript
со вторым делаеш также...

и потом в первый фрем добавляешь:

// Вытаскиваем на сценну наши мувики из библиотеки
_root.attachMovie("pic","pic",1);
_root.attachMovie("mask","mask",2);
// Применяем маску к мувику с картинкой
pic.setMask(mask);
// Задаём переменную для обозначения коэффициэнта замедления
var speed = 5;
// Вычисляем пределы в которых может перемещаться картинка
xMin = mask._width-pic._width;
yMin = mask._height-pic._height;
// При движении мышкой
onMouseMove = function () {
// Отслеживаем по формуле конечную точку куда должна переместиться картинка
endX = -_xmouse/mask._width*(pic._width-mask._width);
endY = -_ymouse/mask._height*(pic._height-mask._height);
// Делаем проверку что бы картинка не уезжала за пределы
if (endX<xMin) {
endX = xMin;
}
if (endX>=0) {
endX = 0;
}
if (endY<yMin) {
endY = yMin;
}
if (endY>=0) {
endY = 0;
}
};
// Двигаем картинку с замедлением до конечной точки
pic.onEnterFrame = function() {
this._x += (endX-this._x)/speed;
this._y += (endY-this._y)/speed;
};

ну вроде все...