PDA

Просмотр полной версии : Как сделать чтобы ролик проигрывался только (!) 1 раз


МышьБарометр
10.05.2008, 21:52
Опять с тем же вопросом.
Собсно код. Требуется чтобы ролик при наведении мыши на объек проигрывался только один(!) раз. И все. Больше чтоб никада. В простом коде это реализуется полностью
типа так _global.i = 1; // глобальная переменная (код в кадре)

a.onRollOver = function()
{ if (i == 1) //

b.gotoAndPlay(1);
Mouse.hide()
a.removeMovieClip();
i = 2
}


чуть усложнила код и вот:


_global.i = 1;
glaz1.onEnterFrame=function () {
this._rotation=(Math.atan2(_ymouse-this._y,_xmouse-this._x)*180/Math.PI)
}
glaz2.onEnterFrame=function () {
this._rotation=(Math.atan2(_ymouse-this._y,_xmouse-this._x)*180/Math.PI)
}
i = 1;
pole.onRollOver = function()
{ if (i == 1) //
prig._alpha = 100;
prig.gotoAndPlay(1);
Mouse.hide()
i = 2
}

В идеале все должно быть так. Навожу мыш на объект "pole" запускается мувиклип prig. Он проигрывается. Навожу второй раз мышь - ничего не происходит.

Но в суровой жизни ролик начинает проигрываться ровно столько раз, сколько мышь попадает на объект pole. Где же ошибка? Нужно же, чтоб ролик prig больше никогда не проигрывался пока не будет перезапущен весь swf

iNils
10.05.2008, 21:57
Информация к размышлению
_global.i = 1;
_global.a = 2;
i = 10;
trace (_global.i)
trace (i)
trace (a)

МышьБарометр
10.05.2008, 22:11
Спасибо. Иду размышлять.

МышьБарометр
10.05.2008, 22:33
Поразмыслив. Обнаружено что переменная "И" не запоминает значение 2. Которое вроде бы должна запомнить. И которое помешает мувиклипу проиграться заново

Не ну я туплю, но я реально не понимаю, почему вставляя правильный рабочий код №1 _global.i = 1; // глобальная переменная (код в кадре)

a.onRollOver = function()
{ if (i == 1) //

b.gotoAndPlay(1);
Mouse.hide()
a.removeMovieClip();
i = 2
} в вариант №2 и получая вот это _global.i = 1;
glaz1.onEnterFrame=function () {
this._rotation=(Math.atan2(_ymouse-this._y,_xmouse-this._x)*180/Math.PI)
}
glaz2.onEnterFrame=function () {
this._rotation=(Math.atan2(_ymouse-this._y,_xmouse-this._x)*180/Math.PI)
}


pole.onRollOver = function()
{ if (i == 1)
prig._alpha = 100
prig.gotoAndPlay(1);
Mouse.hide()
prig.removeMovieClip();
i = 2
}


переменная i не хочет запоминать значение 2

iNils
10.05.2008, 22:38
Где-то что не так сделали. Отсюда не видно.

Роман Вадимович
11.05.2008, 02:33
Уважаемый автор.
Если нужно при наведении мыши проигрывать ролик только 1 раз - можно использовать такой простой код:

mc.onRollOver = function()
{
this.play();
delete this.onRollOver;
}


При этом в мувике mc в первом и последнем кадре должен быть прописан код:

stop();

Psycho Tiger
11.05.2008, 12:57
Но если onRollOver должен постоянно что то делать, даже если мувик уже проигрался (скажем, гадить в логи) то метод что Вы предложили не подходит.
То Автор:
_global - это фу.


var i = 1;

a.onRollOver = function()
{ if (i == 1) b.gotoAndPlay(1);
i = 2
}


Или, если неймется с глобалкой:


_global.i = 1;

a.onRollOver = function()
{ if (_global.i == 1) b.gotoAndPlay(1);
_global.i = 2
}

Роман Вадимович
11.05.2008, 13:23
mc.onRollOver = function()
{
if(!this.played)
{
this.played = true; this.play();
}
// Нагадить в логах
}

Psycho Tiger
11.05.2008, 15:05
Можно и так, но лучше подписать ещё

mc.played=false;


Ибо у меня не всегда срабатывало !undefined_var==false

МышьБарометр
18.05.2008, 22:44
Спасибо большое. Кажись заработало.