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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.12.2009, 19:01
Lex-71 вне форума Посмотреть профиль Отправить личное сообщение для Lex-71 Посетить домашнюю страницу Lex-71 Найти все сообщения от Lex-71
  № 1  
Ответить с цитированием
Lex-71

Регистрация: Sep 2004
Адрес: SentPitersBurg&NovgorodTheGreat
Сообщений: 6
По умолчанию Flash-ролик замедляет свою работу

Набросал простенький растровый редактор.

http://ris.n53.ru

А он, как проработает 5 минут, начинает дико тормозить.

Вот текст программы:

Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.Timer;
 
	public class draw1 extends MovieClip
	{
		var mouse_state=0;
		var Shape_1:Shape;
		var myTimer:Timer;
		//--------------------------------------------------------
		function draw1()
		{
			Shape_1 = new Shape();
			addChild(Shape_1);
 
			var myTimer:Timer = new Timer(1000, 0);
 
			stage.addEventListener(MouseEvent.MOUSE_DOWN,set_mouse_xy);
			stage.addEventListener(MouseEvent.MOUSE_MOVE,mouse_is_moving);
			stage.addEventListener(MouseEvent.MOUSE_UP,off_the_mouse);
 
			myTimer.addEventListener("timer", timerHandler);
			myTimer.start();
 
		}
		//-----------------------------------------------------
		public function set_mouse_xy(evt:MouseEvent)
		{
			mouse_state=1;
		}
		//-------------------------------------------
		public function off_the_mouse(evt:MouseEvent)
		{
			mouse_state=0;
		}
		//-------------------------------------------
		public function mouse_is_moving(evt:MouseEvent)
		{
			var x1:int,y1:int,bb:int;
			bb=5;
			if (mouse_state>0)
			{
				x1=evt.stageX/bb;
				y1=evt.stageY/bb;
 
				Shape_1.graphics.beginFill(0x0,0.5);
				Shape_1.graphics.lineStyle(0, 0,0);
				Shape_1.graphics.drawRect(x1*bb, y1*bb, 10, 10);
				Shape_1.graphics.endFill();
 
			}
		}
		//-------------------------------------------
		public function timerHandler(event:TimerEvent):void
		{
			Shape_1.graphics.beginFill(0xFFFFFF,0.1);
			Shape_1.graphics.lineStyle(0, 0,0);
			Shape_1.graphics.drawRect(0, 0, 500, 500);
 
 
		}
		//-------------------------------------------
 
 
	}
}
Такое ощущение, что флеш где-то и что-то накапливает в процессе....

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Может он вектор накапливает? Если так - то просто периодически переводить все в битмапу
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 13.12.2009, 23:56
Lex-71 вне форума Посмотреть профиль Отправить личное сообщение для Lex-71 Посетить домашнюю страницу Lex-71 Найти все сообщения от Lex-71
  № 3  
Ответить с цитированием
Lex-71

Регистрация: Sep 2004
Адрес: SentPitersBurg&NovgorodTheGreat
Сообщений: 6
"переводить в битмапу" - это как?

Старый 14.12.2009, 13:33
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 4  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
BitmapData.draw()

Старый 14.12.2009, 13:39
Himerets вне форума Посмотреть профиль Отправить личное сообщение для Himerets Найти все сообщения от Himerets
  № 5  
Ответить с цитированием
Himerets
 
Аватар для Himerets

Регистрация: Oct 2009
Адрес: Калининград
Сообщений: 134
Если так, попробуй ускорить таймер в 10 раз (и соответственно, альфу в drawrect поменять на 0,01) и если тормоза будут наступать в 10 раз быстрее - значит дело действительно в накоплении вектора.

Старый 14.12.2009, 13:50
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 6  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Больше нечему. Вектор, инфа 100%.

Старый 23.12.2009, 01:11
Lex-71 вне форума Посмотреть профиль Отправить личное сообщение для Lex-71 Посетить домашнюю страницу Lex-71 Найти все сообщения от Lex-71
  № 7  
Ответить с цитированием
Lex-71

Регистрация: Sep 2004
Адрес: SentPitersBurg&NovgorodTheGreat
Сообщений: 6
Спасибо, PsychoTiger.help();
Действительно - Shape "накапливал вектор" и от этого работа замедлялась.
Теперь я создал "сладкую парочку" BitmapData и Bitmap
делаю BitmapData.draw(Shape_1);
и затем сбрасываю Shape_1.clear();

Старый 23.12.2009, 04:25
chabapok вне форума Посмотреть профиль Отправить личное сообщение для chabapok Найти все сообщения от chabapok
  № 8  
Ответить с цитированием
chabapok

Регистрация: Jul 2009
Сообщений: 240
Записей в блоге: 1
делай по таймеру первой строчкой Shape_1.graphics.clear()

Добавлено через 2 минуты
эээуэ...Вы ж стираете по таймеру все? Я правильно понял? Тогда просто Shape_1.graphics.clear() делайте единственной строчкой.

Старый 23.12.2009, 12:15
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 9  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
В общем такую шутку заметил:

Код AS3:
import com.gamenickorsk.game.qest.controler.Control; 
//import com.gamenickorsk.game.qest.adjustment.GlobalVar;
var control:Control = new Control(); 
this.stop();
 
control.movement(panel.b1,this.rooms,"left");
control.movement(panel.b2,this.rooms,"forward");
control.movement(panel.b3,this.rooms,"right");
control.movement(panel.b4,this.rooms,"back");
control.visU(closepanel,panel,true,m1,"t2","t1");
control=null;
Когда мы создаем экземпляр класса, постепенно накапливается мусор в памяти.
Если после того как экземпляр класса стал больше не нужен - его значение присваиваем null - скорость работы увеличивается.

Старый 23.12.2009, 16:45
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
На скорость работы влиять не должно. Значит, у вас не отписаны все события перед уходом в null.

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

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

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


 


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


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