Форум 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)
-   -   Как сделать чтобы ролик проигрывался только (!) 1 раз (http://www.flasher.ru/forum/showthread.php?t=111866)

МышьБарометр 10.05.2008 21:52

Как сделать чтобы ролик проигрывался только (!) 1 раз
 
Опять с тем же вопросом.
Собсно код. Требуется чтобы ролик при наведении мыши на объек проигрывался только один(!) раз. И все. Больше чтоб никада. В простом коде это реализуется полностью
типа так
Код:

_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

Спасибо большое. Кажись заработало.


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

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