Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   при остановке одного mc почему-то останавливается другой (исходник тут) (http://www.flasher.ru/forum/showthread.php?t=48239)

dtmax 20.08.2003 23:34

при остановке одного mc почему-то останавливается другой (исходник тут)
 
Вложений: 1
Привет!

Подскажите плз, так и должно быть, или я в чем-то туплю...
Аттачу из root'a клип, в середине останавливаю его, и там же аттачу другой клип.

Ожидал, что второй клип начнет играть, ан-нет...
Он тоже стоит на первом кадре, play() не помогает...

Я не совсем понимаю, как сам флеш играет вообще клипы... Так как эти 2 клипа - на level0, то возможно, у флеша есть какой-то "бегунок", который останавливается для всех клипов? В общем, я в непонятках...
В чем грабли????

Посмотрите плз, исходник для MX я приаттачил...

DUDE 20.08.2003 23:46

А они не на один level аттачатся??

sergwizard 21.08.2003 01:56

Вложений: 1
Может быть, вот так?

dtmax 21.08.2003 12:21

2 DUDE: аттачатся на один level (_level0)... Как приаттачить на разные, я не знаю... Или ты имел в виду depth? Depth у них разный, а иначе второй клип "затирает" первый...

2 sergwizard: спасибо за помощь, у тебя все работает как надо... Я пока еще не понял, почему не работало у меня, буду сравнивать, анализировать, разбираться... А вообще у меня складывается такое впечатление, что ActionScript не совсем "строгий" язык...

dtmax 21.08.2003 12:58

причина найдена, но почему так???
 
Вложений: 1
Посмотрите плз, у кого есть время...
Должно работать, но не работает...
В первом кадре _level0 у меня такое написано:

Код:

function motionClip(){}
motionClip.prototype = new MovieClip();
motionClip.prototype.condition=true; //просто какое-то условие
motionClip.prototype.dir=1; //direction of playing
motionClip.prototype.onEnterFrame = function()
{
  if (this._currentframe == this._totalframes) //последний кадр
  {
    if(this.condition==true)
  {
      //_root.attachMovie('circle2','circle2',2);
      //если аттачить тут, то не работает
      //а если из последнего фрейма circle1, то работает...
      this.stop();
  }
    else
      this.dir = -1;
  }
  if (this.dir == -1)
  {
    //проигрывание назад, но это не относится к вопросу
    if (this._currentframe>1)
      this.gotoAndStop(this._currentframe-1);
    else
      this.stop();
  }
};

Object.registerClass('circle1', motionClip);
//аттачится первый клип, из которого потом
//будет аттачиться второй
_root.attachMovie('circle1','circle1',1);

stop();

Ну почему если аттачить клип №2 (circle2) из обработчика OnEnterFrame, то оба клипа останавливаются, а если аттачить из последнего кадра circle1 - все работает????

Пушистик 21.08.2003 13:17

Вложений: 1
я может быть не догнал проблему, но может так...?

dtmax 21.08.2003 13:25

Привет, Пушистик!

Ты "догнал" проблему ;))

В твоем примере - все работает, но у меня в том что я делаю на флеше, нужно обработчик onEnterFrame для клипа circle1 сделать программно - ну система такая... Так вот когда я его делаю программно, и из последнего кадра аттачу второй клип circle2, то оба клипа останавливаются.
А вот если аттачить из последнего кадра circle1, выбрав на линейке последний кадр и прописав там аттач, как это у тебя сделано, то все работает...
В принципе, жить можно и так, но как-то не универсально получается - в нескольких клипах писать в кадрах action'ы... Я хотел все в prototype запихнуть...

Пушистик 21.08.2003 13:25

фак!наверно все таки так....
 
Вложений: 1
вот!из первого кадра!

dtmax 21.08.2003 13:31

Вообще, очень приятно, что люди отрываются от своих дел, и помогают... Хороший сайт...

Пушистик 21.08.2003 13:39

а ты не пробовал задавать новое имя?:)
вот тут:
_root.attachMovie('circle2', 'circle2 ', 2);
тоже иногда бывает полезно.....


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

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