PDA

Просмотр полной версии : Вопрос по альфе и событиям


czuryk
09.08.2007, 14:23
Здравствуйте! Помогите пожалуйста разобраться, никак не могу освоится с ООП Flash, а время очень поджимает. Коротко о задаче, нужно сделать заставку на флеше - картинку которая при появлении (загрузки скрипта) имеет альфу 15, а после 3 секундной задержки плавно наращивает альфу до 100 и после этого замирает (все процессы останавливаются), с кодом вроде разобрался, но никак не удается заставить динамично изменять альфу при загрузке, метод setInterval работает, но на альфе это не отражается, помещаю код в первый фрейм.
"сырой" код примерно такой:
"

this.createEmptyMovieClip("holder_mc", this.getNextHighestDepth());
holder_mc.createEmptyMovieClip("image_mc", holder_mc.getNextHighestDepth());
holder_mc.image_mc.loadMovie("buss_lady.jpg");

var ABlend:Number = 15;
this._alpha = ABlend;

function callback1():Void
{
trace(ABlend);
ABlend++;
this._alpha = ABlend;
}

var intervalID:Number = setInterval(callback1, 10 );
this.stop(); // Без этого скрипт вообще бесится... :(


Среда разработки Macromedia Flash Prof 8

Заранее спасибо !

CrazyFlasher
09.08.2007, 14:33
так это AS1 и никак не ООП =)

Wolsh
09.08.2007, 16:32
вот так надо
this.createEmptyMovieClip("holder_mc", this.getNextHighestDepth());
holder_mc.createEmptyMovieClip("image_mc", holder_mc.getNextHighestDepth());
holder_mc.image_mc.loadMovie("buss_lady.jpg");

var ABlend:Number = 15;
holder_mc.image_mc._alpha = ABlend;

function callback1():Void
{
trace(ABlend);
ABlend++;

holder_mc.image_mc._alpha = ABlend;
updateAfterEvent();
ABlend==100 ? clearInterval(intervalID) : null; // Без этого рост альфы будет бесконечным :(
}

var intervalID:Number = setInterval(callback1, 10 );
this.stop();

CrazyFlasher
09.08.2007, 17:16
Wolsh, a причём тут ООП? =)

screamge
09.08.2007, 17:18
Я бы использовал для этого дела Tween класс.

Wolsh
09.08.2007, 17:30
Wolsh, a причём тут ООП? =)

А при чем тут Wolsh? Я что-то говорил про ООП? Если очень хочется, пусть перед именем мувика подставит this(только не в функции же!), будет уже ООП? :)
this.createEmptyMovieClip("holder_mc", this.getNextHighestDepth());
this.holder_mc.createEmptyMovieClip("image_mc", this.getNextHighestDepth());
this.holder_mc.image_mc.loadMovie("buss_lady.jpg");

var ABlend:Number = 15;
this.holder_mc.image_mc._alpha = ABlend;

function callback1(target_mc:MovieClip):Void
{
trace(ABlend);
ABlend++;
target_mc._alpha = ABlend;
updateAfterEvent();
ABlend==100 ? clearInterval(intervalID) : null; // Без этого рост альфы будет бесконечным :(
}

var intervalID:Number = setInterval(callback1, 10, this.holder_mc.image_mc );

CrazyFlasher
09.08.2007, 18:01
=) нет. this != ООП

etc
09.08.2007, 18:10
CrazyFlasher получает плюс за разведенный флейм не по теме.

czuryk
09.08.2007, 20:36
спасибо за помощь!
я правда пошел по другому пути, в принципе получилось очень даже хорошо (изменение альфы четко линейное), может конечно это не совсем правильно...

var trig: Number = 0;
mc1._alpha = 10;
_root.onEnterFrame = function (){

if (trig==0) {
mc1._alpha += 1;
trace(mc1._alpha);
}

if (mc1._alpha>100) trig = 1;
}

Wolsh
09.08.2007, 22:22
Не, это же некрасиво. Какой fps нужен - не факт, что в конечном результате твоя флэшка поддержит fps порядка 100 кадров в секунду, а?
А если ты анимацию какую вручную сделать захочешь - представь себе таймлайн на несколько сот кадров...
А при 30 у тебя картинка будет ровно три секунды проявляться. Я бы уже уснул. Ты поставь мой код и посмотри, какая красота :)
И еще - вставь в свой код if (mc1._alpha>100){ trig = 1; trace('стало 1');} вместоif (mc1._alpha>100) trig = 1; и посмотри результат