PDA

Просмотр полной версии : скролинг картинки мышкой (без нажатия)


Aisaid
16.07.2007, 18:55
цель: создать окошко в котором "сидит" картинка большего размера чем окно - соответственно с маской
при наведении мышкой на окно начинается прокручиваться картинка в сторону противоположную направлению мышки (с пропорциональной скоростью скрола, от центра окошка)
(предполагаю позже сделать скейл картинки бегунком...)

onClipEvent (load) {
_root.attachMovie("pict1", "pict1", this.getNextHighestDepth());
_root.pict1.setMask(this);

x_center = _x;
y_center = _y;
x_min = (_x-(_root.pict1._height-_root.window._height))/2;
y_min = (_y-(_root.pict1._width-_root.window._width))/2;
_root.pict1._x=x_center;
_root.pict1._y=y_center;
}

onClipEvent (mouseMove) {
this._alpha = 100;
if (_root.pict._x <= _x and _root.pict._x >= x_min) {
// trace (pict1._y);
_root.pict1._x=(x_center-((_xmouse*((x_center-_xmouse)/_height))));
}
if (_root.pict._y <= _y and _root.pict._y >= y_min) {
_root.pict1._y=(y_center-((_ymouse*((y_center-_ymouse)/_width))));
}
}
(условия почему-то вообще не работают...)

результат: запутался во вроде бы несложных вычислениях
сейчас работает как бревно по сравнению с яхтой... :(

помогите правильно всё расчитать ...

здесь исходник: http://master-ais.narod.ru/TTT/scroll.zip

или хотябы примеры на разборку подкиньте

Aisaid
17.07.2007, 14:43
так никто ничего не подскажет?

Torero
17.07.2007, 15:50
Не проверял, но должно работать - из похожего своего кода выдрал.


mask_mc.onRollOver=function(){
nInterval=setInterval(Delegate.create(this, function(){
window_mc._x = -this._xmouse/this._width*window_mc._width;
window_mc._y = -this._ymouse/this._height*window_mc._height;
}),150);
};


-------
при роллауте убиваешь интервал.

З.Ы.Спасибо за идейку - дешево и сердито.)))

Aisaid
19.07.2007, 11:57
Torero
спасибо, так проще вычислять, да
но лучше ставить не ОнРоллОвер, а ОнИнтерФрейм - с условием проверки хитов

я ещё хотел сделать динамику - инерцию и зависимость скорости скролинга от центра окошка...
как это осуществить? какими алгоритмами?

Torero
19.07.2007, 14:07
1.onRollOver или onEnterFrame - зависит от задачи. используя onEnterFrame, надо будет сделать так чтобы код не жрал ресурсы когда мышь не наведена. Неплохой вариант - запускать oEF клипа при ролловере и вырубать при роллауте (сам не пробовал пока, но думаю, что проблем не возникнет).
2.Немного соврал в ответе
window_mc._x=-this._xmouse/this._width*window_mc._width+this._xmouse;
window_mc._y=-this._ymouse/this._height*window_mc._height+this._ymouse;

3.ускорение:введи в правую часть выражения множитель, размер которого зависит от мыши и ширины. что-нить типа "Math.abs(this._width/2-this._xmouse)/5" или юзай tween
4.инерцию смоделировать можно, но сложно - сам не делал, а возиться лень. юзай tween.
З.Ы. Дважды подумай нужно-ли это вообще - а то иногда столько поналепят всего, что просто смотреть тошно.:)

Aisaid
19.07.2007, 16:41
Torero
спасибо, всё правильно говоришь - излишества часто портят впечатление (да и когда флешка тормозит от "красивостей" очень раздражает)
просто нужно было для галлереи, при просмотре каринки в маленьком окошке, чтобы она удобно и красиво скролилась - видел подобный эффект на каком-то сайте, выглядит красиво и ресурсрв не жрёт (да и много ли нужно вычислений чтобы передвинуть одну единстаенную картинку...)

а Твины програмно можно использовать? я не знал...
т.е. можно задавать програмно траекторию движения и ускорение ???
как? именно это мне и нужно! подскажите плиз

Aisaid
31.07.2007, 20:36
подскажите пожалуйста, как работать с классами
мне хотелось бы этот пример: http://www.sephiroth.it/tutorials/flashPHP/scrollRect/
как-то использовать

или как этот пример использовать/преобразить в обычный скрипт?
плиииз

etc
31.07.2007, 23:01
Гм, а чем класс не есть AS-скрипт?

Aisaid
01.08.2007, 12:18
ладно, согласен, всё это скрипт

но как мне этот код использовать?
только не нужно писать - "бери и пользуй" ... дайте пожалуйста конкретные советы

меня смущают всякие непонятности в коде, если его использовать просто так (типа private function)

etc
01.08.2007, 12:53
http://www.flash-ripper.com/archives/000304.htm

Aisaid
01.08.2007, 14:21
"Так, а что насчёт синтаксиса классов?"

http://as3.ru/?p=14 - тут ещё пример, но я так и не понял, как мне пользоваться вышеприведённім классом

etc
01.08.2007, 14:23
http://as3.ru/?p=14 - тут ещё пример, но я так и не понял, как мне пользоваться вышеприведённім классом
Это пример с ActionScript 3, вам он не нужен.

Aisaid
02.08.2007, 12:39
разобрался с помощью White, всё работает, спасибо ей...