Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.10.2009, 10:00
Ануб вне форума Посмотреть профиль Отправить личное сообщение для Ануб Найти все сообщения от Ануб
  № 1  
Ответить с цитированием
Ануб

Регистрация: Nov 2007
Сообщений: 28
По умолчанию Гладкое увеличение кнопок

Очень нравится плавное увеличение/уменьшение кнопок в игре "счастливый фермер" при наведении/отведении курсора мыши, захотел сделать такое же. Вроде бы всё получилось, но работает хреново - иногда дрожит вместо начала увеличения, как бы застряв на старте. Особенно это видно при наведении мыши на самый край мувиклипа.

Прошу разъяснить, что нужно поправить в коде, чтобы работало как часы.

Во вложении исходник CS3

Сам код:

Код AS1/AS2:
var bglowfilter = new flash.filters.GlowFilter();
bglowfilter.color = 0x000000;
bglowfilter.strength = 0.35;
bglowfilter.blurY = 15;
bglowfilter.blurX = 15;
var bglowfilter_arr:Array = new Array();
bglowfilter_arr.push(bglowfilter);
 
function scbuttons(tar) {
	var b1:MovieClip = tar;
	b1.filters = bglowfilter_arr;
	b1.sc = 100;
	b1.scmax = 170;
	b1.scdelta = 14;
	b1.over = 0;
	b1.onRollOver = function() {
		this.over = 1;
		this.swapDepths(_root.getNextHighestDepth());
		scaling();
	};
	b1.onRollOut = function() {
		this.over = 0;
		scaling();
	};
	function scaling() {
		if (b1.over == 1) {
			b1.onEnterFrame = function() {
				if (this.sc<this.scmax) {
					this.sc += this.scdelta;
					this._xscale = this.sc;
					this._yscale = this.sc;
				} else {
					this.onEnterFrame = null;
				}
			};
		} else {
 
			b1.onEnterFrame = function() {
				if (this.sc>100) {
					this.sc -= this.scdelta;
					this._xscale = this.sc;
					this._yscale = this.sc;
				} else {
					this.onEnterFrame = null;
				}
			};
 
		}
	}
}
scbuttons(b1);
scbuttons(b2);
scbuttons(b3);
Вложения
Тип файла: zip buttons.zip (6.8 Кб, 48 просмотров)

Старый 09.10.2009, 13:26
woland24 вне форума Посмотреть профиль Отправить личное сообщение для woland24 Найти все сообщения от woland24
  № 2  
Ответить с цитированием
woland24

Регистрация: Oct 2009
Сообщений: 50
у меня было такое дрожжание когда при наведении на край кнопки менялся кадр мувика и в нем было изображение на пару пикселей меньше предыдущего и курсор уже оказывался не на кнопке и возвращался ппервый кадр, и т.д....

Старый 09.10.2009, 14:14
GreyClown вне форума Посмотреть профиль Отправить личное сообщение для GreyClown Найти все сообщения от GreyClown
  № 3  
Ответить с цитированием
GreyClown

Регистрация: Dec 2008
Сообщений: 20
Отправить сообщение для GreyClown с помощью ICQ
а что мешает сделать так?

Код AS1/AS2:
var size:Number = 50;
 
b1.onRollOver = function(){
	var s:Number = 0;
	onEnterFrame = function(){
		if(s<=size) {
			b1._xscale = 100 + s;
			b1._yscale = 100 + s;
			s+=10;
		}			
	}
}
 
b1.onRollOut = function(){
	var s:Number = 0;
	onEnterFrame = function(){
		if(s<=size) {
			b1._xscale = 100 + size - s;
			b1._yscale = 150 - s;
			s+=10;
		}			
	}
}
исходник приаттачил

там уж сам подгонишь под свои нужды
Вложения
Тип файла: zip buttons_2.zip (6.7 Кб, 64 просмотров)


Последний раз редактировалось GreyClown; 09.10.2009 в 14:17.
Старый 12.10.2009, 22:03
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Этот лучше, потому что когда перестает быть нужным, onEnterFrame удаляется, и не грузит комп без причины.
Код AS1/AS2:
clip.onRollOver = function() {
	this.onEnterFrame = function() {
		if (this._xscale < 200) {
			this._xscale = this._yscale += 10;
		}
	};
};
clip.onRollOut = clip.onDragOut = function () {
	this.onEnterFrame = function() {
		if (this._xscale > 100) {
			this._xscale = this._yscale -= 10;
		}
		if (this._xscale == 100) {
			delete this.onEnterFrame;
		}
	};
};

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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