Просмотр полной версии : Вопрос по альфе и событиям
Здравствуйте! Помогите пожалуйста разобраться, никак не могу освоится с ООП 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 и никак не ООП =)
вот так надо
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, 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 != ООП
CrazyFlasher получает плюс за разведенный флейм не по теме.
спасибо за помощь!
я правда пошел по другому пути, в принципе получилось очень даже хорошо (изменение альфы четко линейное), может конечно это не совсем правильно...
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;
}
Не, это же некрасиво. Какой fps нужен - не факт, что в конечном результате твоя флэшка поддержит fps порядка 100 кадров в секунду, а?
А если ты анимацию какую вручную сделать захочешь - представь себе таймлайн на несколько сот кадров...
А при 30 у тебя картинка будет ровно три секунды проявляться. Я бы уже уснул. Ты поставь мой код и посмотри, какая красота :)
И еще - вставь в свой код if (mc1._alpha>100){ trig = 1; trace('стало 1');} вместоif (mc1._alpha>100) trig = 1; и посмотри результат
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.