Здравствуйте дорогие форумчане, столкнулся с очень неожиданым багом (что-то мне подсказывает что это баг).
Была задача - зарисовать bitmapData спрайтами с ипользованием блэнд-модов, применяя операции перемещения поворота и масштабирования. При отсутсвии блэнд-модов - все гуд, но с использованием любого из них, функция BitmapData.draw() рисует линии на контурах изображения. Решил написать максимлаьно простенькую дэмку чтоб убедится что ошибка не в проэкте, и результат оказался аналогичен
вот скрин результата без использования блэнд-модов
а вот полоски в результате прменения блэнд-модов
Отключение параметра smoothing тоже ничего не дает, полоски остаются.
Если можно дайте хотябы ссылки на кастомные аналоги для работы с BitmapData. Буду как-то обходить это
Вот код дэмки, для singleSp можно использовать любое изображение с прозрачным фоном, вот мое:
http://www.flasher.ru/forum/attachme...1&d=1389390901
Код AS3:
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
public class Main extends Sprite
{
[Embed(source = "assets/pic1.png")]
public var singleSp:Class;
var picBD:BitmapData;
var picBM:Bitmap;
public function Main():void
{
picBD = new BitmapData(600, 600, true, 0);
picBM = new Bitmap(picBD, "auto", true);
addChild(picBM);
var tr:Matrix = new Matrix();
var drawIm:BitmapData = (new singleSp as Bitmap).bitmapData;
for (var i:int = 0; i < 30; i++ ) {
var scale:Number = 0.3 + Math.random() * 0.8;
tr.setTo(1, 0, 0, 1, 0, 0);
tr.scale(scale, scale);
tr.rotate(Math.random() * 2);
tr.tx = Math.random() * 150 + 150;
tr.ty = Math.random() * 150;
picBD.draw(drawIm, tr, new ColorTransform(1,1,1,0.4), "invert", null, true);
}
}
}
}