PDA

Просмотр полной версии : изменение прозрачности, в чем ошибка???


_Nagash_
01.06.2007, 01:56
проблема в следующем (решена!):

внутри функции doSmth параметр прозрачности "alfa" изменятся, хоть его значение нигде не менятся.
т.е. при начале работы "прозрачность" его постепенно увеличивается и становиться 100%, хоть изначально она имела определное значение.


В чем ошибка и как ее можно исправить?

Вот код (drawRect - прототип мувиклипа, рисует прямогугольник:
"MovieClip.prototype.drawRect = function(x, y, width, height, color, alpha)..."

var intId = 10;
function doSmth() {

my_mc.drawRect(х, y, i, h, 0x0000FF, alfa);
i++;
if (i>100)
{
clearInterval(intId);
}
}
intId = setInterval(doSmth, intId);


2 вопрос:
как можно добиться разной скорости изменения ширины клипов? т.е. чтобы раздиваглись допустим по формуле f(x) (не советуйте i подстваить вместо х - не то получится)

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

etc
01.06.2007, 02:14
А где alfa?

Kikasso
01.06.2007, 02:54
i это ширина прямоугольника? Похоже вы ее в альфу загоняете.

RealShat
01.06.2007, 15:33
А где собственно "var alfa" и её значение?

_Nagash_
02.06.2007, 02:04
занчения задаютсья:

my_mc.drawRect(х, y, i, h, 0x0000FF, 40);

i Не причем тут, прсто для общности показал.
алфа стаил 0 - все равно до 100 доходитт... то же происходит если это постваить в онЕнтерФрейм - увеличивается до 100, хоть стоит, к примеру, 40.

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

вот полный код:

только убрал из прототипа установление прозрачности (алфа) и устанавливаю ее для созданного мувиклипа.

но при компиляци получаетсья не то, что надо...
нало, чтобы "разъзжались" в разные стороны прямоугольники с усатновленной прозрачностью, а она меняется...

в чем проблема?


// 1
MovieClip.prototype.drawRect = function(x, y, width, height, color)

{
this.beginFill(color);
this.moveTo(x, y);
this.lineTo(x+width, y);
this.lineTo(x+width, y+height);
this.lineTo(x, y+height);
this.lineTo(x, y);
this.endFill();
};

//



this.createEmptyMovieClip("pOblast_mc", this.getNextHighestDepth());
this.createEmptyMovieClip("nOblast_mc", this.getNextHighestDepth());

var i:Number=1;
var intId = 10;

pOblast_mc._alpha=20;
nOblast_mc._alpha=20;

function modify_pn_width() //изменение ширины замыкающего слоя
{
tmp=x+w/2;


pOblast_mc.drawRect(tmp, y, 0-i, h, 0x0000FF);
nOblast_mc.drawRect(tmp, y, 0+i, h, 0xFF0000);

i++;
if (i>100)
{
clearInterval(intId);
}
}
intId = setInterval(modify_pn_width, intId);


и возникает сразу 2-ой вопрос... как можно добиться разной скорости изменения ширины клипов? т.е. чтобы раздиваглись допустим по формуле f(x) (не советуйте i подстваить - не то получиттся )

Спасибо.

З.Ы.

при изменения прозрачности на меньший уровень, 10, к приеру, "деффек" становиться отчетливо заметен...

Возможно проблема из аз использования СетИнтервал?

как по другому можно влиять на скорость воспроизведения мувика (в данном случае увеличения его ширины...?

etc
02.06.2007, 14:35
_Nagash_, для того, чтобы что-то добавить, нужно ОТРЕДАКТИРОВАТЬ свой пост, а не создавать новый!

з.Ы. А очищать после нарисованного ничего не надо разве?

_Nagash_
02.06.2007, 14:48
в смысле очищать? нужно чтобы мувиг растягивался (по ширине) от Х до Х1., а не перемещался...

З.Ы. ок, приму к сведению

etc
02.06.2007, 15:02
Надо добавить this.clear() перед beginFill. И где w объявлен?

_Nagash_
03.06.2007, 18:02
Надо добавить this.clear() перед beginFill. И где w объявлен?

спасибо, теперь все работает :)