Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > Увеличение изображения относительно выбранной точк


Автор: var 23.10.2009, 23:56
как реализовать в flash-клипе увеличчение изображения относительно выбранной точки?
Например эфект приближения относительно лица персонажа
спасибо

Автор: bars80080 24.10.2009, 00:42
т.е. увеличение всего изображения с сохранением центра на выбранной точке?
это чистая математика
ширину и высоту можно менять за счёт movieclip._xscale, movieclip._yscale, там вроде процентами задаётся
поймать во время клика координаты курсора _xmouse, _ymouse
а дальше всего лишь расчитывать и подгонять

Автор: var 24.10.2009, 10:45
да увеличение всего изображения с сохранением центра на выбранной точке.
это получаетс покадровая анимация?
а нельзя как нить в конечном кадре выбрать центр и процент увеличения, затем движение от первого кадра и оно его увеличит?

Автор: bars80080 24.10.2009, 12:49
Цитата(var @  24.10.2009,  10:45 Найти цитируемый пост)
это получаетс покадровая анимация?

да нет. не обязательно. можно таймаутом отсчитывать шаги в пределах одного кадра. а если нельзя прерывать ход выполнения ролика, то да. тогда лучше повесить счётчик на _root.onEnterFrame


Цитата(var @  24.10.2009,  10:45 Найти цитируемый пост)
а нельзя как нить в конечном кадре выбрать центр и процент увеличения, затем движение от первого кадра и оно его увеличит? 

я вообще, считаю, что такой способ наиболее оптимален.
есть два метода решения задачи: 
1. вешать математическую формулу на функцию и пусть она каждый раз отсчитывает новые координаты клипа.
2. трассировка. в момент клика произвести все расчёты, создать массив с координатами и далее по ходу выполнения просто подставлять эти координаты

придерживаюсь второго

сама задача, как уже говорил - чисто математическая.
вот у нас есть клип, у него есть параметры _x, _y, _width, _height. положение относительно хоста и размеры.
мы кликаем по некой точке клипа, координаты считываем с _xmouse, _ymouse.
определив координаты, мы вычисляем в процентном отношении на каком расстоянии от левого верхнего угла находятся эти координаты.
допустим, при ширине клипа 100 пикселов, клик произошёл на расстоянии в 30 пикселов от левого края клипа. картинку хоти увеличить в два раза, а точку клика оставить неизменной. значит, финальная ширина будет 200 пикселов, а точка клика будет на расстоянии 60 пикселов, но так как она должна остаться неизменной, то измениться координата _x клипа xdif = 30 - 60 = -30, т.е. xnew = _x - 30 пикселов
получив новую координату, мы в цикле формируем массив:

Код

for(var i =0; i < 48; i++) {
    xcoor[i] = _x + xdif*i/48;
}

где xcoor - массив x координаты клипа, 48 - длительность процесса увеличения клипа, т.е. 2 секунды для 24 кадровой шкалы
таким же образом вычисляем массивы y координаты, массивы w и h (ширины и высоты) клипа

далее останется на каждом кадре или на каждом запуске таймера setInterval() присваивать клипу новые координаты клипу _x, _y, _xscale, _yscale

Автор: var 24.10.2009, 14:15
не все так просто как хотелось бы) 
спасибо за ответ! 
буду знать где копать!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)