![]() |
изменение размера клипа
День добрый ,Джентельмены.
в виде урока решил написать простенькую программку и весело споткнулся на ней :) Сценарий простой: при наведении мышки на объект (шар) он должен постепенно увеличиваться в размерах в зависимости от положения курсора мыши,чем ближе к центру шара,тем размер шара больше, при выходе мыши за пределы границ размер шара восстанавливается. Как правильно написать вышеуказанный сценарий? Мой вариант такой: Создаем клип ball_mc с радиусом 100 Задаем переменные : «точка1» , «точка 2», «коэффициент». Задаем свойства «точек» (надо ли это делать не знаю) Привязываем координаты «точки1» к координатам мыши , а «точку2» к координатам центра шара. Задаем условие : Если координата x «точки1» >= x «точки2»-100 и x «точки1» <= x «точки2»+100 и то же для у, то выполняется выражение : Вычисляется «коэффициэнт» Если х «т1» >= х «т2» -100 и х «т1» <= х «т2» то К = х «т1» -( «хт2»-100) Иначе К = ( х «т2»+100)-х «т1» Далее K=K/100 Далее размеры клипа увеличиваются _scale=100*(1+K) Выражение заканчивается. Таким образом имеем максимальное увеличение шара в 200 процентов Джентельмены, рабочий ли такой сценарий? Какие поправки или изменения нужны? И как все это на язык ActionScript2 перевести? Есстественно у меня ничего не работает :)... Второй вариант родился позже...думается надо использовать функцию. написал такой код : function grow ( ) { var xB ;// точка привязанная к центру шара var xM ;// как бы точка привязанная к указателю мыши var k ;// коэффициент,необходимый для вычислений xB = _this._x; xM =_root._xmouse; if (xB >= xM-100 && xB<=xM) { k=xB-(xM-100); k=k/100; ball_mc._scale= 100*(1+k); } } Ball_mc.onRollOver = grow ; Помидорами в начинающих просьба не кидать. |
Держи и не мучайся
Код:
ball_mc.onEnterFrame = function() { |
благодарствую :)
..... из к.ф " белое солнце пустыни" -тебя сразу убить,или помучаешься? -уж лучше помучаюсь... :) |
ух...почти разобрался...
не могу понять строчки с 11 по 15...если можете,прокоментируйте их... и еще момент,клип ведет не совсем так...вопрос в пропорциях изменения,он должен быть линейным, а в вышеуказанном сценарии шар увеличивается значительно больше при подходе к центру, а на краях почти не реагирует на мышь... еще раз спасибо (благодаря вам,еще немного знаний черпнул) |
и еще один интересный моментик, клип как-то с замедлением реагирует на мышь...то есть если быстро провести мышью по шару,то он не успевает увеличиться...а как увеличить скорость изменения размера? (чтоб синхронно с проходом указателя мыши изменялся?)
.... но в любом случае здорово, уже можно кнопки поинтереснее делать. |
Цитата:
Код:
ball_mc.onEnterFrame = function() { |
Измени 100 на 50 (кроме(-Math.abs(D)+100)*2 здесь попробуй подставить свое значение) увидиш что выйдет
|
Джентельмены,прокоментируйте эту строчку пож.
var delta_scaleX = this.scale_X - this._xscale; понятно,что задаем переменную и присваиваем ей значение, только я въехать не могу,что такое _xscale....и если можете,то растолкуйте ,как Фидель Кастро,по пунктам это выражение...ну не пойму я его никак.. |
_xscale это маштабирование по горизонтали
|
ну ты даешь, жми F1
|
блин, даже о такой вещи как нажать F1 я не додумался....сафсем старый стал...
изменил немного выражение на D=D/100; this.scale_X=(2-D)*100; и в конце updateAfterEvent(); но блин практически ничего не изменилось.... изменения шара все равно не мгновенные....я не пойму,может это Флэш тратит столько времени на обсчет программы ??? (хотя там всего несколько строк)...Мышку уберешь из шарика он чуть ли не 3 секунды тратит на исходное положение,потихоньку "сдуваясь"...чудно как-то... |
может твой шар какой нить крутой растр ... давай исход поправим ...
|
Вложений: 1
я вот прикрипил Fla-шку,она ей богу не большая.
самое интересно,что шарик -самый элементарный векторный элемент... посмотрите ,если есть время. |
а ты фпс поставь побольше - все будет плавненько :)
|
Поставь fps побольше и ещё пожешь поиграть с коэффициэнтами которые в конце
this._xscale += delta_scaleX/ 2; this._yscale += delta_scaleY/ 2; |
ок...попробую
|
спасибо за советы, все заработало,как хотел.
|
| Часовой пояс GMT +4, время: 17:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.