PDA

Просмотр полной версии : Размещение ф-ий.HELP!!!


DimG
17.05.2006, 21:39
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
хмм... белая начала помогать нубам а не пинать...
с чего бы это...? :)
посмеялись и хватит. скучно стало. пора работать, писать программы, можно иногда и нубу помочь, они тожа люди, иногда даже флешеры.

motor4ik
18.05.2006, 14:53
о! белая взрослеет чтоли, нуба человеком назвала

0xFFFFFF
18.05.2006, 14:55
о! белая взрослеет чтоли, нуба человеком назвала
это комплимент?

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
т. е. вы хотите сказать, что вторая ф-ия вызывается до завершения первой??
нет. вторая функция вызывается после первой. но onEnterFrame первой функции не успевает произойти.

0xFFFFFF
18.05.2006, 18:44
а как вы такие аватарки рисовали? я просто не художник но идее такая, мотоцикл такой зелененький пушистый мне бы, вот бы круто...
я тоже не художник. просто беру и рисую.
прикольно рисовать кодом.. но нельзя вставлять в аватарки swf'ки.. :(

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

0xFFFFFF
18.05.2006, 19:27
странно...я ведь написал, чтобы первая ф-ия завершалась только после выполнения счетчика...
обе твои функции только переписывают 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
СПАСИБО!!!