Показать сообщение отдельно
Старый 30.09.2006, 23:15
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 17  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 Makak:
Вы меня огорчаете... Я вам до сего момента сделал 2 примера, а вы всё равно прикрепляете свой исходник, который сделан заново и ужасно. Я же вынес все скрипты на отдельный слой, чтобы все они были в одном месте, а вы снова распихали всё по мувиклипам. Да ещё и используете допотопные способы доступа к свойствам обьектов... setProperty() уже давно не использует никто... Я вам написал ещё один пример... И я вас прошу, разберитесь в нём... В следующий раз я скорее всего уже ничего писать не буду, если вы опять всё переиначите. Может вам кажется, что я написал что-то сложное? Ну так спрашивайте. Затем этот форум и создан - чтобы спрашивать.
Итак, возвращаясь к вашему примеру...
Два мувиклипа областей карты, которые лежат у нас на сцене, называем, соответственно, region1 и region2. На кадре в отдельном слое скриптов пишем:
Код:
var MAX_SCALE:Number = 120;
var DEFAULT_SCALE:Number = 100;

this.region1.speed = 0;
this.region1.speedFactor = DEFAULT_SCALE;
this.region2.speed = 0;
this.region2.speedFactor = DEFAULT_SCALE;

this.region1.onRollOver = function()
{
	this.speedFactor = MAX_SCALE;
	this.swapDepths(this._parent.getNextHighestDepth());
}

this.region1.onRollOut = this.region1.onReleaseOutside = function()
{
	this.speedFactor = DEFAULT_SCALE;
}

this.region1.onEnterFrame = function()
{
	this.speed = (this.speed * 0.8) + ((this.speedFactor - this._xscale) * 0.2);
	this._xscale += this.speed;
	this._yscale = this._xscale;
}

this.region2.onRollOver = this.region2.onReleaseOutside = this.region1.onRollOver;
this.region2.onRollOut = this.region1.onRollOut;
this.region2.onEnterFrame = this.region1.onEnterFrame;
Ваше "болтание" мувиклипом областей действует по принципу пружинки. То есть, когда вы наводите на мувиклип курсор, его _xscale и _yscale стремятся к величине MAX_SCALE, которая в вашем случае равна 120. При "уведении" курсора, вышеуказанные величины стремятся к величине DEFAULT_SCALE, которая равна 100. Это соответствует, кстати, значениями свойств _xscale и _yscale мувиклипа по умолчанию.
Короче, это в неявном виде закон Гука + интеграция Эйлера...
Далее я сократил тот скрипт, что был у вас, выбросил ненужное... У вас же мувиклип увеличивается пропорционально, поэтому нет смысла вводить скорости для разных осей. Наконец, события для обоих мувиклипов идентичны, поэтому нет смысла описывать по несколько раз одно и то же...
Ну и смена глубины происходит на наведение мыши в строчке:
Код:
this.swapDepths(this._parent.getNextHighestDepth());
Всё... Разбирайтесь... Пример прикрепляю...

PS:
И я вас прошу, не переиначивайте всё заново. Я ж для ответа вам время трачу, а потом выходит, что зря...
Вложения
Тип файла: zip swapDepths.zip (6.9 Кб, 67 просмотров)
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого