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

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

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

Регистрация: Jun 2005
Сообщений: 10
По умолчанию тормозит мувик

Сделал мувик, в котором за курсором мыши ползает точка и рисуется её траектория с помощью
moveTo(oldx,oldy);
lineTo(x,y);
Через некоторое время мувик начинает жутко тормозить. Можно ли как-то сделать чтобы не тормозило? Возможно можно как-то производить ээ растеризацию или как это называется.. вообщем то, что делает команда Break Apart - над каждой прорисованной линией, чтобы они становились не векторными. Может от этого тормозить будет меньше?

Старый 27.06.2005, 00:00
MIX-er вне форума Посмотреть профиль Отправить личное сообщение для MIX-er Найти все сообщения от MIX-er
  № 2  
Ответить с цитированием
MIX-er
 
Аватар для MIX-er

Регистрация: Jun 2005
Сообщений: 612
Отправить сообщение для MIX-er с помощью ICQ Отправить сообщение для MIX-er с помощью Yahoo
он ентер фрейм юзаешь???
__________________
Best regards, Boris Petrov

Старый 27.06.2005, 00:42
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 3  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от ShuXer
Сделал мувик, в котором за курсором мыши ползает точка и рисуется её траектория с помощью
moveTo(oldx,oldy);
lineTo(x,y);
Через некоторое время мувик начинает жутко тормозить. Можно ли как-то сделать чтобы не тормозило? Возможно можно как-то производить ээ растеризацию или как это называется.. вообщем то, что делает команда Break Apart - над каждой прорисованной линией, чтобы они становились не векторными. Может от этого тормозить будет меньше?
в корень смотришь: количество векторов в твоем мувике пропорционально времени проигрывания, на каждой смене кадра плеер их перерисовывает - отсюда и тормаза
растеризировать их не получится, пока: были какие-то намеки на подобную штуку в 8-ой версии, но кто знает..

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

Регистрация: Jun 2005
Сообщений: 10
Да, onEnterFrame.

Жалко.. а может есть тогда какая-нибудь функция чтобы удалить линию? типа ластика. Чтобы при достижении определённого количества линий самые "старые" из них стирались.

Старый 27.06.2005, 01:38
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
чтоб одну нет, тока все сразу - MovieClip.clear()
как вариант: рисовать в пустом мувике, считая количество линий, по достижении предела создавть новый и рисовать в нем, а предыдущий/предпоследний/и т.д. удалять..

Старый 27.06.2005, 02:08
kruasan вне форума Посмотреть профиль Отправить личное сообщение для kruasan Найти все сообщения от kruasan
  № 6  
Ответить с цитированием
kruasan
 
Аватар для kruasan

Регистрация: May 2004
Адрес: Kiev
Сообщений: 704
Не совсем понятно, зачем в каждом кадре запускать moveTo(oldx,oldy);
И еще, в данном случае по моему уместнее юзать не onEnterFrame а onMouseMove, более экономный расход ресурсов.

Предлагаю выход - "тушить" хвост линии через определенные интервалы времени. Типа пол линии в одном мувиклипе, а пол линии - в другом. Вторую половину плавно гасишь альфой, затем делаешь ей removeMovieClip(), шоб ресурсы не жрала. Первую половину обзываем "второй половиной", а линию продолжаем рисовать в новом эмптиМувиКлипе, который обзываем "первой половиной". Ну и так до бесконечности...

Старый 27.06.2005, 03:04
ShuXer вне форума Посмотреть профиль Отправить личное сообщение для ShuXer Найти все сообщения от ShuXer
  № 7  
Ответить с цитированием
ShuXer
 
Аватар для ShuXer

Регистрация: Jun 2005
Сообщений: 10
Я не подумал создавать для каждой линии пустой мувик...
Теперь я его создаю вот так
Код:
       
  i++;          
  createEmptyMovieClip('mc'+i,i);  	
  with ('mc'+i){  		
      moveTo(_root.oldx, _root.oldy);  		
      lineTo(_root.m._x, _root.m._y);  //m - та самая точка которая бегает за мышкой  		
      num = _root.i;  		
      onEnterFrame = function(){  			
          if (num<_root.i - 50) removeMovieClip(this);  		
      }          
  }
Получается много-много мувиков с прямыми mc1...mcN . Я хотел привязать к onEnterFrame каждого из них проверку, чтобы при количестве >50 он удалялся. Но я не очень знаком вообще с ActionScript'ом и поэтому ничё не получается.. - Точка стоит на месте и не двигается. Что я делаю не так?


Последний раз редактировалось ShuXer; 27.06.2005 в 03:09.
Старый 27.06.2005, 19:18
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
вариант :сразу создаем скока надо, а потом по очереди в них рисуем, ну и альфу походу меняем
Код:
var num=50
var p=this.createEmptyMovieClip('p',-1);
for(var i=num,lines=[];i--;)lines[i]=this.createEmptyMovieClip(i,i);
this.onMouseMove=function(){
	var x=p._x, y=p._y;
	p._x=_xmouse,p._y=_ymouse;
	n++;
	n%=num;
	with(lines[n]) clear(),lineStyle(0,0),moveTo(x,y),lineTo(p._x,p._y);
	for(var i=num;i--;)lines[i]._alpha=((i+num-n)%num)*100/num;
}

Старый 27.06.2005, 20:15
Буньков Максим вне форума Посмотреть профиль Отправить личное сообщение для Буньков Максим Посетить домашнюю страницу Буньков Максим Найти все сообщения от Буньков Максим
  № 9  
Ответить с цитированием
Буньков Максим
[+1 02.06.2006]
[+1.4 01.04.2006]
[+1 01.07.2006]
 
Аватар для Буньков Максим

Регистрация: Feb 2003
Адрес: Екатеринбург
Сообщений: 848
Отправить сообщение для Буньков Максим с помощью ICQ
А если не хочишь оптимизировать код... тода покупай Крутой Athlon 64 ) там дольше будет работать без тормазов, ди ОЗУ побольше надо...
__________________
С уважением, Maksi.

Старый 28.06.2005, 15:15
E-mail вне форума Посмотреть профиль Отправить личное сообщение для E-mail Найти все сообщения от E-mail
  № 10  
Ответить с цитированием
E-mail
 
Аватар для E-mail

Регистрация: Jun 2005
Адрес: Питер
Сообщений: 498
Записей в блоге: 1
Навскидку могу предложить один способ без использования Movie Clipов,создаёшь примерно три ключевых кадра на двух слоях на первом слое первом кадре рисуешь что надо,на втором удаляешь,одновременно на втором слое рисуешь.На третьем посылаешь на первый,где одновременно опять рисуется первый слой и удаляется второй.Частоту кадров естессно желательно поднять до 24...можно и побольше.Загрузка проца при этом где то 1-2 процента,но у меня АМД 3000+

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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