Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Размещение ф-ий.HELP!!! (http://www.flasher.ru/forum/showthread.php?t=79869)

DimG 17.05.2006 21:39

Размещение ф-ий.HELP!!!
 
Код:

var p:Number =5, max:Number = 150;

function rotate (i1:Number, obj:MovieClip, max1:Number)
{
        obj._parent.onEnterFrame = function()
        {
               
                if (i1<max1)
                {
                        obj._rotation += i1;
                        i1++;
                }
                else
                {
                       
                       
                        delete obj._parent.onEnterFrame;
                        return  ;
                }
               
        }
       
       
}

function rotateplz (obj:MovieClip, i2:Number)
{
       
        obj._parent.onEnterFrame = function()
        {
                if (i2>0)
                {
                        obj._rotation+=i2;
                        i2--;
                       
                }
                else
                {
                        delete obj._parent.onEnterFrame;
                        return;
                }
        }
       
}

rotate (p, mc, max);
rotateplz(mc, p);


Данный код я разместил на первый кадр. 'mc' - это клип пропеллера. Странно, но почему-то проигрыватель пропускает первую
obj._parent.onEnterFrame = function() {........}
и переходит ко втрорй ф-ии(rotateplz), которая выполняется нормально.
(Конечно,я могу вложить одну ф-ию в другую, но мне интересно, почему так происходит.)
Обьясните, пожалуйста, почему так происходит и как надо поступить в данной ситуации.

0xFFFFFF 17.05.2006 23:45

у тебя вторая функция перезаписывает obj._parent.onEnterFrame
ты их вызываешь одновременно и onEnterFrame первой сработать не успевает.
попробуй в конце написать
Код:

rotate(p, mc, max);
var delay = setInterval(this,"rotate2",2000);
rotate2 = function () {
        clearInterval(delay);
        rotateplz(mc, p);
}

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

NeZnayKa 18.05.2006 12:23

хмм... белая начала помогать нубам а не пинать...
с чего бы это...? :)

motor4ik 18.05.2006 12:46

Поняла наверное, что была неправа.

0xFFFFFF 18.05.2006 13:58

Цитата:

Сообщение от NeZnayKa
хмм... белая начала помогать нубам а не пинать...
с чего бы это...? :)

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

motor4ik 18.05.2006 14:53

о! белая взрослеет чтоли, нуба человеком назвала

0xFFFFFF 18.05.2006 14:55

Цитата:

Сообщение от motor4ik
о! белая взрослеет чтоли, нуба человеком назвала

это комплимент?

motor4ik 18.05.2006 15:00

нубу? думаю конечно

etc 18.05.2006 15:00

Вероятно, нет

0xFFFFFF 18.05.2006 15:01

у меня настроение сегодня очень хорошее.

motor4ik 18.05.2006 15:01

а как вы такие аватарки рисовали? я просто не художник но идее такая, мотоцикл такой зелененький пушистый мне бы, вот бы круто...

motor4ik 18.05.2006 15:02

Цитата:

Сообщение от Белая
у меня настроение сегодня очень хорошее.

круто. может мне аватрку нарисуешь :rolleyes:

DimG 18.05.2006 18:40

т. е. вы хотите сказать, что вторая ф-ия вызывается до завершения первой??

0xFFFFFF 18.05.2006 18:43

Цитата:

Сообщение от DimG
т. е. вы хотите сказать, что вторая ф-ия вызывается до завершения первой??

нет. вторая функция вызывается после первой. но onEnterFrame первой функции не успевает произойти.

0xFFFFFF 18.05.2006 18:44

Цитата:

Сообщение от motor4ik
а как вы такие аватарки рисовали? я просто не художник но идее такая, мотоцикл такой зелененький пушистый мне бы, вот бы круто...

я тоже не художник. просто беру и рисую.
прикольно рисовать кодом.. но нельзя вставлять в аватарки swf'ки.. :(

DimG 18.05.2006 19:12

странно...я ведь написал, чтобы первая ф-ия завершалась только после выполнения счетчика...

0xFFFFFF 18.05.2006 19:27

Цитата:

Сообщение от DimG
странно...я ведь написал, чтобы первая ф-ия завершалась только после выполнения счетчика...

обе твои функции только переписывают onEnterFrame, все что находится внутри этой функции не выполняеся пока эта функция не будет вызвана. она вызовется только в следующем кадре, т.е. после выполнения всех функций в это кадре. если ты хочешь хотя бы один раз вызвать эту функцию после её объявления пиши:
Код:

function rotate(i1:Number, obj:MovieClip, max1:Number) {
        obj._parent.onEnterFrame = function() {
                if (i1<max1) {
                        obj._rotation += i1;
                        i1++;
                } else {
                        delete obj._parent.onEnterFrame;
                        return;
                }
        };
        obj._parent.onEnterFrame(); // вызов
}


DimG 19.05.2006 19:09

СПАСИБО!!!


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

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