![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2005
Сообщений: 35
|
День добрый ,Джентельмены.
в виде урока решил написать простенькую программку и весело споткнулся на ней ![]() Сценарий простой: при наведении мышки на объект (шар) он должен постепенно увеличиваться в размерах в зависимости от положения курсора мыши,чем ближе к центру шара,тем размер шара больше, при выходе мыши за пределы границ размер шара восстанавливается. Как правильно написать вышеуказанный сценарий? Мой вариант такой: Создаем клип 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 ; Помидорами в начинающих просьба не кидать. |
|
|||||
|
Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
|
Держи и не мучайся
ball_mc.onEnterFrame = function() {
var dx = this._parent._xmouse-this._x;
var dy = this._parent._ymouse-this._y;
var D = Math.sqrt((dx*dx)+(dy*dy));
this.scale_X = (-Math.abs(D)+100)*2;
this.scale_Y = this.scale_X;
if (this.scale_X<=100) {
this.scale_X = 100;
this.scale_Y = 100;
}
var delta_scaleX = this.scale_X-this._xscale;
var delta_scaleY = this.scale_Y-this._yscale;
if (this.scale_X>=100) {
this._xscale += delta_scaleX/10;
this._yscale += delta_scaleY/10;
}
};
|
|
|||||
|
Регистрация: Jul 2005
Сообщений: 35
|
благодарствую
..... из к.ф " белое солнце пустыни" -тебя сразу убить,или помучаешься? -уж лучше помучаюсь... ![]() |
|
|||||
|
Регистрация: Jul 2005
Сообщений: 35
|
ух...почти разобрался...
не могу понять строчки с 11 по 15...если можете,прокоментируйте их... и еще момент,клип ведет не совсем так...вопрос в пропорциях изменения,он должен быть линейным, а в вышеуказанном сценарии шар увеличивается значительно больше при подходе к центру, а на краях почти не реагирует на мышь... еще раз спасибо (благодаря вам,еще немного знаний черпнул) |
|
|||||
|
Регистрация: Jul 2005
Сообщений: 35
|
и еще один интересный моментик, клип как-то с замедлением реагирует на мышь...то есть если быстро провести мышью по шару,то он не успевает увеличиться...а как увеличить скорость изменения размера? (чтоб синхронно с проходом указателя мыши изменялся?)
.... но в любом случае здорово, уже можно кнопки поинтереснее делать. |
|
|||||
|
Ветеран форума
|
Цитата:
ball_mc.onEnterFrame = function() {
var dx = this._parent._xmouse-this._x;
var dy = this._parent._ymouse-this._y;
var D = Math.sqrt((dx*dx)+(dy*dy));
this.scale_X = (-Math.abs(D)+100)*2;
this.scale_Y = this.scale_X;
if (this.scale_X<=100) {
this.scale_X = 100;
this.scale_Y = 100;
}
var delta_scaleX = this.scale_X-this._xscale;
var delta_scaleY = this.scale_Y-this._yscale;
if (this.scale_X>=100) {
this._xscale += delta_scaleX/10;
this._yscale += delta_scaleY/10;
}
//
updateAfterEvent();
//
}
__________________
BestMasterиZация |
|
|||||
|
Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
|
Измени 100 на 50 (кроме(-Math.abs(D)+100)*2 здесь попробуй подставить свое значение) увидиш что выйдет
|
|
|||||
|
Регистрация: Jul 2005
Сообщений: 35
|
Джентельмены,прокоментируйте эту строчку пож.
var delta_scaleX = this.scale_X - this._xscale; понятно,что задаем переменную и присваиваем ей значение, только я въехать не могу,что такое _xscale....и если можете,то растолкуйте ,как Фидель Кастро,по пунктам это выражение...ну не пойму я его никак.. |
|
|||||
|
Ветеран форума
|
_xscale это маштабирование по горизонтали
__________________
BestMasterиZация |
|
|||||
|
Регистрация: Jun 2004
Адрес: Москва
Сообщений: 475
|
ну ты даешь, жми F1
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|