Просмотр полной версии : Масштабирование рисунка
Здравствуйте.
Задача : есть мувик mv1, в котором картинка
Нужно при наведении мышки делать увеличение, а при убирании мышки - возвращение на прежнее место. Думал сделать так:
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++;
}
};
};
но работает каряво, если мышку ведешь по возвратному движению мувика.
Что посоветуете?
Можно так:
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;
}
}
да, но мне надо, чтобы потом мувик возвращался на первоначальное место
Добавлено через 7 минут
вроде написал
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...
ведь не писать для каждого одно и тоже???
mv1.onRollOver =Delegate.create(mv1,commonOnReleaseFunction);... и.т.п. А лучше каждый мувик опиши одним классом в котором определи эти одинаковые функции
Пищу прям здесь, за работоспособность не отвечаю..
..
// импортируем 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
Спасибо, но что-то не работает.
А как классом можно воспользоваться?
Спасибо, но что-то не работает.
Допиши функцию для RollOuta, я и не обещал рабочего примера - просто показал куда копать.
Да, да. Я понял.
В любом случае, большое спасибо за участие!
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;
}
};
};
}
Клипы желательно выровнять по центру.
не совсем понимаю, как это работает.
В чем смысл цикла, ведь i становиться равный 6...?
блиин..что непонятного-то.
КопиПастиш Мувики, сколько тебе нужно, даешь им имена mv1, mv2, mv3...
Циклом перебираешь, сколько тебе нужно мувиков. Вся песня.
Не понятен смысл цикла, удали..
У тебя ведь была задача, увеличивать/уменьшать мувики в некотором кол-ве при этом, не копируя сотни раз одни и те же операции. Ура! цикл, решил все твои проблемы, можешь сказать спасибо Макромедийца / Адобовцам за то, что они внесли это чуудо в свой язык, и упростили программистам жись:)
Извини, что немного напряг тебя.. :( честно, не хотел.
Знаю, что такие цикл. Просто не совсем понял, как это работает.
Я правильно понимаю, что на каждой итерации идет присвоение текущему объекту реализаций функций onRollOver onRollOut?
Добавлено через 30 минут
вот немного по-другому оформил твою идею
var shag:Number = 8; //приращение для длины, ширины, x, y
var n:Number = 3; //кол-во приращений
var clipNum:Number = 2;// Число клипов
for (i=1; i<=clipNum; i++) {
this["mv"+i]._alpha = 50;
this["mv"+i].w = this["mv"+i]._width;
this["mv"+i].onRollOver = function() {
var j:Number = 0;
this.onEnterFrame = function() {
this._alpha = 100;
if ((j<n) && (this._width<this.w+shag*n)){
this._width += shag;
this._height += shag;
this._x -= shag;
this._y += shag;
j++;
} else {
delete this.onEnterFrame;
}
};
};
this["mv"+i].onRollOut = function() {
var j:Number = 0;
this.onEnterFrame = function() {
if ((j<n) && (this._width>this.w)){
this._width -= shag;
this._height -= shag;
this._x += shag;
this._y -= shag;
j++;
}
else {
this._alpha = 50;
delete this.onEnterFrame;
}
};
};
}
KiL33 еще раз большое СПАСИБО!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.