Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   покадровый цикл (http://www.flasher.ru/forum/showthread.php?t=59771)

Mr.Brownstone 23.06.2004 21:31

покадровый цикл
 
есть такая функция:

flashDown = function (aim) {
couleur = new Color(aim);
m = 255;
x = 50;
aim._parent.onEnterFrame = function() {
m -= x;
x = Math.round(x*.8);
m<0 ? delete aim.onEnterFrame : m;
couleur.setBrightOffset(m);
};
};

когда я пишу

flashDown(mc_1);
flashDown(mc_2);

то изменения происходят только с mc_2, видимо вся завязка с
onEnterFrame. Как мне вызвать покадровый цикл, чтобы работал во всех
клипах?

Елё 23.06.2004 22:11

а ты не пробовал _parent убрать?

Елё 23.06.2004 22:28

Вот, как то так должно быть:

Код:

flashDown = function ()
{
        this.couleur = new Color(this);
        this.m = 255;
        this.x = 50;
        this.onEnterFrame = function()
        {
                this.m -= this.x;
                this.x = Math.round(this.x*.8);
                if(this.m<0) delete onEnterFrame;
                else this.couleur.setBrightOffset(this.m);
        };
};
flashDown.call(mc_1);
flashDown.call(mc_2);


silin 23.06.2004 23:56

по разному может быть:
Код:

MovieClip.prototype.flashDown = function () {
        var couleur = new Color(this),m = 255,x = 50;
        this.onEnterFrame = function() {
                m -= x;
                x = Math.round(x*0.8);
                if(m<0) delete this.onEnterFrame;
                else couleur.setBrightOffset(m);
        };
};
mc_1.flashDown();
mc_2.flashDown();


Елё 24.06.2004 16:29

Silin, а ты так пробовал?

Мне кажется не должно работать по скольку
1. Ты используешь вар которые не действительны при вызове onEnterFrame
2. У меня вечно проблемы с this. Если его явно не указывать то флэш переменных не видит почему-то :-(

silin 24.06.2004 16:58

в 6-ке работает

Dindin 26.06.2004 10:46

класс (в отдельном файле FlashDown.as)
Код:

class FlashDown extends MovieClip {
        function FlashDown(movieClip:MovieClip, m:Number, x:Number) {
                var couleur = new Color(movieClip);
                movieClip.onEnterFrame = function() {
                        m -=x;
                        x = Math.round(x*0.8);
                        if (m<0) {
                                delete movieClip.onEnterFrame;
                        } else {
                                couleur.setBrightOffset(m);
                        }
                };
        }
}

Инициализация класса:
Код:

newFlashDownObject = new FlashDown(mc,255,50);

Елё 26.06.2004 18:07

И че все MovieClip экстендят? ;-)

Можнож просто class определить, который ничего не "extends"

Мне кажется не нужен тут MovieClip

Да, и если это работает (я сам не проверял, но наверное же должно работать?) откуда в onEnterFrame берется m и x? Это же вроде параметры другой функции и они не действительны когда вызывается onEnterFrame... Или у меня какое то глобальное недопонимание?

silin 26.06.2004 18:47

глянь

Елё 26.06.2004 21:17

2 silin: Спасибо, примерно понятно


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

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