В общем ситуация такая, есть мобильный проект на Box2D, в нем есть шар - снаряд, который управляется физикой. Решил применить к нему вот
этот эффект, естественно пример приведенный там, перевел на ООП, получился такой класс:

Код AS3:
/**
* http://www.FreeActionScript.com
**/
package effects
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.geom.Point;
import flash.geom.Rectangle;
import game.*;
public class BlittTrailer extends Sprite
{
// canvas bitmap data var
private var canvasBitmapData:BitmapData;
// canvas bitmap - this will be added to the display list
private var canvas:Bitmap;
// canvas rectangle - used to save canvas size
private var canvasRect:Rectangle;
// circle (trailer) bitmap data
private var circleBitmapData:BitmapData;
// circle rectangle - used to save canvas size
private var circleRect:Rectangle;
// color transformer - used to make cavas transparent
private var colorTransform:ColorTransform;
private var _parent:DisplayObjectContainer;
private var _ball:BallActor;
public function BlittTrailer(parent:DisplayObjectContainer, ball:BallActor)
{
_parent = parent;
_ball = ball;
init();
}
public function init():void
{
// create main canvas bitmap data
canvasBitmapData = new BitmapData(Main.screenX, Main.screenY, true, 0x333333);
canvas = new Bitmap(canvasBitmapData);
_parent.addChild(canvas);
canvasRect = canvasBitmapData.rect;
// create circle trailer bitmap data
circleBitmapData = new BitmapData(10, 10, true, 0xFFFFFF);
// draw CircleTrailer movieclip, linked from library, inside circle bitmap data
circleBitmapData.draw(new CircleTrailer());
// save circle rectangle size
circleRect = canvasBitmapData.rect;
// create ColorTransformer to modify alpha of bitmap
colorTransform = new ColorTransform();
// (make it 99% transparent)
colorTransform.alphaMultiplier = .99;
}
public function removeTrailer():void
{
_parent.removeChild(canvas);
}
public function render():void
{
// lock bitmap data to prevent display from updating while we modify it
canvasBitmapData.lock();
// change alpha
canvasBitmapData.colorTransform(canvasRect, colorTransform);
// draw circle
canvasBitmapData.copyPixels(circleBitmapData, circleRect, new Point(_ball.ball.x - 5, _ball.ball.y - 5), null, null, true);
// apply blur filter
canvasBitmapData.applyFilter(canvasBitmapData, canvasBitmapData.rect, new Point(0, 0), new BlurFilter(8, 8)); //3, 3
// unlock bitmap data
canvasBitmapData.unlock();
if (!_ball.ball.stage)
_parent.removeChild(canvas);
}
}
}
где _parent - контейнер где идет вся игра, _ball - шар к которому применяется спецэффект. Визуально все работает как надо, но повторяю проект мобильный и фпс при появлении на сцене такого снаряда падает в 2 раза. Как оптимизировать не знаю, буду рад любым идеям.
Добавлено через 41 секунду
И да - аппаратное ускорение пока не используется.
Добавлено через 14 минут
Сейчас попробовал включить

Код:
<renderMode>gpu</renderMode>
абсолютно ничем не помогло, только некоторые фильтры слетели(((