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

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

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

Регистрация: Mar 2009
Сообщений: 105
По умолчанию Масштабирование рисунка

Здравствуйте.

Задача : есть мувик mv1, в котором картинка
Нужно при наведении мышки делать увеличение, а при убирании мышки - возвращение на прежнее место. Думал сделать так:

Код AS1/AS2:
mv1.onRollOver = function() {
	i = 0;
	mv1.onEnterFrame = function() {
		if (i<2) {
			mv1._width += 20;
			mv1._height += 20;
			mv1._x -= 20;
			mv1._y += 20;
			i++;
		}
	};
 
};
 
mv1.onRollOut = function() {
trace(mv1._width);
	i = 0;
	mv1.onEnterFrame = function() {
		if (i<2)  {
			mv1._width -= 20;
			mv1._height -= 20;
			mv1._x += 20;
			mv1._y -= 20;
			i++;
		}
	};
 
};
но работает каряво, если мышку ведешь по возвратному движению мувика.

Что посоветуете?

Старый 23.03.2009, 23:20
sinya вне форума Посмотреть профиль Отправить личное сообщение для sinya Посетить домашнюю страницу sinya Найти все сообщения от sinya
  № 2  
Ответить с цитированием
sinya
 
Аватар для sinya

Регистрация: Apr 2003
Адрес: Ukraine, Kiev
Сообщений: 189
Отправить сообщение для sinya с помощью ICQ
Можно так:
Код:
mv1.onEnterFrame = function () {
	if (this.hitTest(_xmouse, _ymouse)) {
		this._xscale = this._yscale += (130 - this._yscale)/10;
	} else 
	{
		this._xscale = this._yscale -= (this._yscale-100)/10;
	}
}
__________________
Платон мне друг, но истина в вине.

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

Регистрация: Mar 2009
Сообщений: 105
да, но мне надо, чтобы потом мувик возвращался на первоначальное место

Добавлено через 7 минут
вроде написал

Код AS1/AS2:
x1 = mv1._x;
y1 = mv1._y;
w1 = mv1._width;
h1 = mv1._height;
shag = 5;
n = 3;
mv1._alpha = 50;
 
mv1.onRollOver = function() {
	i = 0;
	mv1._alpha = 100;
	mv1.onEnterFrame = function() {
		if ((i<n) && (mv1._width<w1+shag*n) && (mv1._height<h1+shag*n) && (mv1._x>=x1-shag*n) && (mv1._y<=y1+shag*n)) {
			mv1._width += shag;
			mv1._height += shag;
			mv1._x -= shag;
			mv1._y += shag;
			i++;
		}
	};
};
 
mv1.onRollOut = function() {
	i = 0;
	mv1.onEnterFrame = function() {
		if ((i<n) && (mv1._width>w1) && (mv1._height>h1) && (mv1._x<=x1) && (mv1._y>=y1)) {
			mv1._width -= shag;
			mv1._height -= shag;
			mv1._x += shag;
			mv1._y -= shag;
			i++;
		}
		else {
			mv1._alpha = 50;}
	};
};
но как использавать этот код для нескольких мувиков mv1, mv2...
ведь не писать для каждого одно и тоже???

Старый 24.03.2009, 00:01
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Код AS1/AS2:
mv1.onRollOver =Delegate.create(mv1,commonOnReleaseFunction);...
и.т.п. А лучше каждый мувик опиши одним классом в котором определи эти одинаковые функции
__________________
Отряд Котовскага

Старый 24.03.2009, 00:07
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 5  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
а можно небольшой пример

Старый 24.03.2009, 00:51
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Пищу прям здесь, за работоспособность не отвечаю..
Код AS1/AS2:
 ..
// импортируем Delegate
import mx.utils.Delegate
..
for (var i :Number=1;i<10;i++)
{
this["mv"+i].onRollOver = Delegate.create(this["mv"+i],commonOnRollOver);
}
 
 
commonOnRollOver = function() {
	var i = 0;
	this._alpha = 100;
       var x1 =this._x;
       var y1 = this._y;
       var w1 = this._width;
       var h1 =this._height;
 
	this.onEnterFrame = function() {
		if ((i<n) && (this._width<w1+shag*n) && (this._height<h1+shag*n) && (this._x>=x1-shag*n) && (this._y<=y1+shag*n)) {
			this._width += shag;
			this._height += shag;
			this._x -= shag;
			this._y += shag;
			i++;
		}
	};
};
 
//..ну и то же самое для onRollOut
// Не забудь удалить this.onEnterFrame
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 24.03.2009 в 00:57.
Старый 24.03.2009, 01:21
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 7  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
Спасибо, но что-то не работает.

А как классом можно воспользоваться?

Старый 24.03.2009, 10:40
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от zelik Посмотреть сообщение
Спасибо, но что-то не работает.
Допиши функцию для RollOuta, я и не обещал рабочего примера - просто показал куда копать.
__________________
Отряд Котовскага

Старый 24.03.2009, 12:23
zelik вне форума Посмотреть профиль Отправить личное сообщение для zelik Найти все сообщения от zelik
  № 9  
Ответить с цитированием
zelik

Регистрация: Mar 2009
Сообщений: 105
Да, да. Я понял.
В любом случае, большое спасибо за участие!

Старый 24.03.2009, 12:24
KiL33 вне форума Посмотреть профиль Отправить личное сообщение для KiL33 Найти все сообщения от KiL33
  № 10  
Ответить с цитированием
KiL33
 
Аватар для KiL33

Регистрация: Jul 2007
Адрес: Гражданин Российской Федерации
Сообщений: 1,122
Отправить сообщение для KiL33 с помощью ICQ
Код AS1/AS2:
var clipNum:Number = 5;// Число клипов
for (i=1; i<=clipNum; i++) {
	this["mv"+i].onRollOver = function() {
		this.onEnterFrame = function() {
			if (this._xscale<350) {
				this._xscale += 20;
				this._yscale = this._xscale;
			} else {
				delete this.onEnterFrame;
			}
		};
	};
	this["mv"+i].onRollOut = function() {
		this.onEnterFrame = function() {
			if (this._xscale>100) {
				this._xscale -= 20;
				this._yscale = this._xscale;
			} else {
				delete this.onEnterFrame;
			}
		};
	};
}
Клипы желательно выровнять по центру.

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

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

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


 


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


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