PDA

Просмотр полной версии : Flash-ролик замедляет свою работу


Lex-71
13.12.2009, 19:01
Набросал простенький растровый редактор.

http://ris.n53.ru

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

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

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);


}
//-------------------------------------------


}
}Такое ощущение, что флеш где-то и что-то накапливает в процессе.... :o

TanaTiX
13.12.2009, 20:02
Может он вектор накапливает? Если так - то просто периодически переводить все в битмапу

Lex-71
13.12.2009, 23:56
"переводить в битмапу" - это как?

Psycho Tiger
14.12.2009, 13:33
BitmapData.draw()

Himerets
14.12.2009, 13:39
Если так, попробуй ускорить таймер в 10 раз (и соответственно, альфу в drawrect поменять на 0,01) и если тормоза будут наступать в 10 раз быстрее - значит дело действительно в накоплении вектора.

Psycho Tiger
14.12.2009, 13:50
Больше нечему. Вектор, инфа 100%.

Lex-71
23.12.2009, 01:11
Спасибо, PsychoTiger.help();
Действительно - Shape "накапливал вектор" и от этого работа замедлялась.
Теперь я создал "сладкую парочку" BitmapData и Bitmap
делаю BitmapData.draw(Shape_1);
и затем сбрасываю Shape_1.clear();

chabapok
23.12.2009, 04:25
делай по таймеру первой строчкой Shape_1.graphics.clear()

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

nickorsk
23.12.2009, 12:15
В общем такую шутку заметил:

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 - скорость работы увеличивается.

Psycho Tiger
23.12.2009, 16:45
На скорость работы влиять не должно. Значит, у вас не отписаны все события перед уходом в null.