Форум 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)
-   -   setInterval для нескольких мувиков внутри класса (http://www.flasher.ru/forum/showthread.php?t=107554)

Michaos 04.02.2008 13:24

setInterval для нескольких мувиков внутри класса
 
Проблема такова: нужно создать setInterval для нескольких мувиков внутри класса, а создается только для одного.
Код:

var thisClip:Array = new Array(); // массив мувиков
var time:Number = 1;
for(var i:Number = 1; i <= 3; i++)
{
  _root["intervalId" + i] = setInterval(
  function()
  {
    thisClip[i]._x += 2;
    if(thisClip[i]._x >= 10)
    {
      clearInterval(_root["intervalId" + i]);
    }
    updateAfterEvent();
  }
  , time);
}

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

iNils 04.02.2008 13:41

Внтури вашей function() i всегда имеет только последнее значение из цикла, то есть 4.

Michaos 04.02.2008 15:47

Ага, спасибо за совет, и в правду, переменная i внутри функции никак не изменялась.
Решил проблему, вынеся тело цикла в отдельный метод MoveAllMovieClips с 2 входящими параметрами: MovieClip и счетчик.
Код:

private function ForCycle()
{
  var thisClip:Array = new Array(); // массив мувиков
  for(var i:Number = 1; i <= 3; i++)
  {
    MoveAllMovieClips(thisClip, i)
  }
}
private function MoveAllMovieClips(thisClip, i)
{
  var time:Number = 1;

  _root["intervalId" + i] = setInterval(
  function()
  {
    thisClip[i]._x += 2;
    if(thisClip[i]._x >= 10)
    {
      clearInterval(_root["intervalId" + i]);
    }
    updateAfterEvent();
  }
  , time);
}

И без всяких prototype-ов обошлось!

wvxvw 04.02.2008 15:50

Просто добавлю, для общего сведения %) параметр отвечающий за промежутки между вызовами функции в setInterval считается в миллисекундах...

Michaos 04.02.2008 18:24

Да, я в курсе, с таким частым вызовом двигается плавнее, но я подумал, что 1 мс - это уж слишком нагруженно!
Вообще, суть того, что я делаю - мувики едут вправо (пропорционально уменьшаясь по мере движения) и постоянно появляются слева, но из-за того, что функция setInterval не особо точная, зацикленное движение выглядит весьма коряво... (у меня по таймеру появление новых экземпляров).
Надо через Tween делать. И исходя из позиций двигающихся мувиков, а не из того, сколько времени прошло.


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

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