Показать сообщение отдельно
Старый 06.04.2013, 19:24
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 24  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Цитата:
И довольно сильно тормозит воспроизведение. Можете подсказать, что я делаю не так? Параметры таймера ставлю одинаковые и там и там.
Воспроизведение тормозит, наверно потому что сильно много образуется векторных линий в mySprite.graphics, надо кешировать graphics в битмапдату например как-то так
Код AS3:
package  
{
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.utils.*;
 
	/**
	 * ...
	 * @author Lexcuk
	 */
	public class BitiDoc extends Sprite
	{
		public var mySprite:Sprite;
		public var bmd:BitmapData;
		public var bm:Bitmap;
		public var lastMousePos:Point;
		public function BitiDoc() 
		{
			addChild(mySprite = new Sprite());
			addChild(bm = new Bitmap(bmd = new BitmapData(800, 600,true,0x00000000)));
			var timer:Timer = new Timer(1);
			lastMousePos = new Point();
			timer.start();
			timer.addEventListener(TimerEvent.TIMER, timerHandler);
		}
 
		public function timerHandler(e:TimerEvent):void {
			mySprite.graphics.clear();
			mySprite.graphics.lineStyle(3, 0);
			mySprite.graphics.moveTo(lastMousePos.x, lastMousePos.y);
			mySprite.graphics.lineTo(lastMousePos.x = stage.mouseX, lastMousePos.y = stage.mouseY);
 
			var spRect:Rectangle = mySprite.getBounds(mySprite);
			var mat:Matrix = new Matrix();
			mat.translate( -spRect.x, -spRect.y);
			if (spRect.width > 200) spRect.width = 200;
			if (spRect.height > 200) spRect.height = 200;
 
			var b:BitmapData = new BitmapData(spRect.width, spRect.height,true,0x00000000);
			b.draw(mySprite, mat, null, null, null, true);
			bmd.copyPixels(b, new Rectangle(0, 0, spRect.width, spRect.height), new Point(spRect.x, spRect.y), null, null, true);
 
		}
 
	}
 
}
Так сколько бы линий не было тормозов не будет, потому что graphics спрайта чистый.
__________________
Гоночка