Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   изменение размера клипа (http://www.flasher.ru/forum/showthread.php?t=66730)

Fokker 14.07.2005 18:23

изменение размера клипа
 
День добрый ,Джентельмены.
в виде урока решил написать простенькую программку и весело споткнулся на ней :)

Сценарий простой:

при наведении мышки на объект (шар) он должен постепенно увеличиваться в размерах в зависимости от положения курсора мыши,чем ближе к центру шара,тем размер шара больше, при выходе мыши за пределы границ размер шара восстанавливается.

Как правильно написать вышеуказанный сценарий? Мой вариант такой:
Создаем клип 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 ;


Помидорами в начинающих просьба не кидать.

Futs 14.07.2005 19:06

Держи и не мучайся
Код:

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;
        }
};


Fokker 14.07.2005 19:30

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

:)

Fokker 15.07.2005 12:19

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

еще раз спасибо (благодаря вам,еще немного знаний черпнул)

Fokker 15.07.2005 12:24

и еще один интересный моментик, клип как-то с замедлением реагирует на мышь...то есть если быстро провести мышью по шару,то он не успевает увеличиться...а как увеличить скорость изменения размера? (чтоб синхронно с проходом указателя мыши изменялся?)

....
но в любом случае здорово, уже можно кнопки поинтереснее делать.

KUZEN 15.07.2005 12:31

Цитата:

Сообщение от Fokker
и еще один интересный моментик, клип как-то с замедлением реагирует на мышь...то есть если быстро провести мышью по шару,то он не успевает увеличиться...а как увеличить скорость изменения размера? (чтоб синхронно с проходом указателя мыши изменялся?)

....
но в любом случае здорово, уже можно кнопки поинтереснее делать.

вот эта штуковина тебе немного поможет updateAfterEvent();
Код:

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();
        //
}


Futs 15.07.2005 14:11

Измени 100 на 50 (кроме(-Math.abs(D)+100)*2 здесь попробуй подставить свое значение) увидиш что выйдет

Fokker 15.07.2005 14:45

Джентельмены,прокоментируйте эту строчку пож.

var delta_scaleX = this.scale_X - this._xscale;

понятно,что задаем переменную и присваиваем ей значение, только я въехать не могу,что такое _xscale....и если можете,то растолкуйте ,как Фидель Кастро,по пунктам это выражение...ну не пойму я его никак..

KUZEN 15.07.2005 14:50

_xscale это маштабирование по горизонтали

Futs 15.07.2005 14:53

ну ты даешь, жми F1


Часовой пояс GMT +4, время: 00:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.