Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.06.2008, 17:52
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 11  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Вовсе не миф, прям сейчас пойду и сделаю Чем хуже-то?
Миф что лучше. Хуже тем, что идет рассинхронизация таймлаймом, а значит и с фпс, а визуализация происходит по фпс.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 30.06.2008, 19:12
Ruffus вне форума Посмотреть профиль Отправить личное сообщение для Ruffus Найти все сообщения от Ruffus
  № 12  
Ответить с цитированием
Ruffus
 
Аватар для Ruffus

Регистрация: Apr 2008
Сообщений: 82
Почитал про setInterval. Cложилось впечатление, что это не совсем то, что надо. Попробовал сделать - эффект получился не тот.
Может я и не прав. Похоже, что эта штука поможет скажем повторить несколько однотипных итераций через одинаковые промежутки времени. А когда цикл есть, и надо внутри итерации отсрочить действие.

Наверное, можно выыернуться, но будет громоздко очень.

Цитата:
Для решения этой проблемы есть два пути. Первый вариант - создать 3 кадра, т.е. цикл в трех кадрах организовать. В первом - инициализация переменных цикла, второй - тело цикла, а также проверка счетчика (условия) цикла, третий - переход на второй кадр.
Как это цикл в трёх кадрах? Как это переход из третьего на второй?..


Последний раз редактировалось iNils; 30.06.2008 в 19:53.
Старый 01.07.2008, 14:52
Ruffus вне форума Посмотреть профиль Отправить личное сообщение для Ruffus Найти все сообщения от Ruffus
  № 13  
Ответить с цитированием
Ruffus
 
Аватар для Ruffus

Регистрация: Apr 2008
Сообщений: 82
Код:
for (var loop = 0; loop <= n; loop++) trace(loop);
Скажите, как заставить флэш ждать в указанном примере после каждой трассировки? И будет ли сам загрузчик считать это временем "отдыха"?

Старый 01.07.2008, 15:01
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 14  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Ruffus!

Вы пишите скрипт в кадрах (кадре) на выполнение скрипта кадра отводится всего 15 сек. Если Вы не укладываетесь в него флеш-плэйер выдаст предупреждающее сообщение. И с этим ничего не поделаешь и паузы и байпасы Вам не помогут (ваш код). Обход один - в каждом кадре выполнять такой объем операций цикла, чтобы по времени уложиться в 15 секунд, а остуальную часть перенести на скрипт 2 кадра. Если и во втором кадре останется, то на третьий, итд. Или сделать это все в 3 кадрах.

Что не ясно?!

Старый 01.07.2008, 15:03
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 15  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Цитата:
Сообщение от Ruffus Посмотреть сообщение
Скажите, как заставить флэш ждать в указанном примере после каждой трассировки? И будет ли сам загрузчик считать это временем "отдыха"?
Вот как раз здесь и надо использовать setInterval.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.07.2008, 15:06
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 16  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Здравствуйте iNils! Ждать то он может (имеется ввиду setInterval) вот только вопрос в том, сколько?!!!
__________________
Случайность, господа, это знаете ли непознанная необходимость.

Старый 01.07.2008, 18:55
Ruffus вне форума Посмотреть профиль Отправить личное сообщение для Ruffus Найти все сообщения от Ruffus
  № 17  
Ответить с цитированием
Ruffus
 
Аватар для Ruffus

Регистрация: Apr 2008
Сообщений: 82
Попробовал сделать 5 пустых кадров и в цикле написать что-то вроде
Код:
for (var loop = 0; loop <= n; loop++) {
  if (loop/500 > _root.currentframe) { _root.nextFrame(); }
}
НЕ помогло. Тот же эффект, предлагает остановить ролик. Заменил 500 на триста, никак. Дело не в кадрах?

Старый 01.07.2008, 19:34
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 18  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
С этим кодом:
Код:
for (var loop = 0; loop <= n; loop++) {
  if (loop/500 > _root.currentframe) { _root.nextFrame(); }
}
Будет выполняться весь цикл.
Попробуйте что-то типа:
Код:
var interval=setInterval(myLoop,100);
var si=0;
var ei=si+200;
function myLoop(){
for (var loop = si; loop <= ei; loop++) {
if(loop>n){
clearInterval(interval);
break;
}
    тело_цикла;
}
si=ei;
ei=si+200;

}
Очень криво, конечно, но где-то рядом.

Старый 02.07.2008, 15:26
Ruffus вне форума Посмотреть профиль Отправить личное сообщение для Ruffus Найти все сообщения от Ruffus
  № 19  
Ответить с цитированием
Ruffus
 
Аватар для Ruffus

Регистрация: Apr 2008
Сообщений: 82
А могу через setInterval организовать внутри функции вызод подфункции. А то пишу, результата никак не видно. Вот и заподозрил неладное.
У меня этот несчастный цикл находится внутри метода и использует внутри себя кучу локальных переменных. Если его пытаться выделить в
отдельный метод, то надо будет городить чёта с этими переменными. Поэтому я спрашиваю про реальность использования подпрограмм,
функций внутри функций.


Последний раз редактировалось Ruffus; 02.07.2008 в 18:26.
Старый 21.07.2008, 21:49
Ruffus вне форума Посмотреть профиль Отправить личное сообщение для Ruffus Найти все сообщения от Ruffus
  № 20  
Ответить с цитированием
Ruffus
 
Аватар для Ruffus

Регистрация: Apr 2008
Сообщений: 82
Под конец мучений пришёл примерно к такой схеме. Есть метода класса. В нём:
Код:
...
loop_counter = 0;
sti = 0;
stj = 0;
duration = 1;
intervalID = setInterval(mainLoop, duration);
function mainLoop() {
  for (var i = sti; i <= n; i++) {
    ...
    if (sti == i) j = stj; else j = 0;
    while (j <= m) {
      ...
      depth = InstanceManager.getNextDepth(this);
      MyClip.create(name, depth, ...);
      j++;
      loop_counter++;
      if (loop_counter >= limit) {
        loop_counter = 0;
        sti = i;
        stj = j;
        return;
      }
    }
  }
  clearInterval(intervalID);
  otherCode();
  return;
}
Таким образом, за каждый заход строятся объекты MyClip в количестве limit, потом запоминаются текущие счётчики циклов, и осуществляется выход из функции. Если же проход циклов закончен, что действие setInterval аннулируется и идёт переход к финальным действиям метода, внутри которого всё это разворачивается.

Заметил, что скорость построения объектов уменьшается. Под конец оно занимает уже секунды. Проверил через getTimer время и удивился: там к концу выполнения значения высвечиваются порядка 100000. Так как это в миллисекундах, это получается, что последние клипы строятся по 100 секунд каждый.

Никак не могу понять, что происходит.


Последний раз редактировалось Ruffus; 21.07.2008 в 21:57.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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