tengo el siguiente código, hecha solo para probar, ya que era una especie de un insecto que quería clavar:La aplicación del filtro de sombreado a un objeto BitmapData ignora el rectángulo pasado: ¿cómo aplicar correctamente el filtro de sombreado?
_shader = new Shader(new TheShader() as ByteArray);
_shader.data.width.value = [64.0];
_shader.data.height.value = [64.0];
_shaderFilter = new ShaderFilter(_shader);
_sequence = new Vector.<BitmapData>();
var smallBD:BitmapData;
var i:int;
_delta = new Point();
var megabase:BitmapData = new TheBitmap().bitmapData;
var _rect:Rectangle = new Rectangle(0, 0, 64, 64);
for (i = 0; i < 64; i++) {
smallBD = new BitmapData(64, 64, true, 0x00808080);
//_rect.x = i;
_rect.y = i;
smallBD.applyFilter(megabase, _rect, _delta, _shaderFilter);
_sequence.push(smallBD);
}
Entonces ciclo a través de _sequence con el fin de ver si el cambio rectángulo realmente hace algo. No hace nada, si _shaderFilter es en realidad un filtro de sombreado. Las pruebas con cualquiera de los filtros de flash incorporados funcionan según lo previsto, pero con ShaderFilter a veces funciona como si el rectángulo suministrado fuera simplemente sourceBitmapData.rect, cualquiera que sea el mapa de bits de origen, y algunas veces se comporta como si no hubiera datos pasados, siendo el límite ubicado en una posición extraña: con un mapa de bits de tamaño 512x384, el borde de la región que se pasa al sombreador está aparentemente ubicado en (256,192) o en el centro del mapa de bits. Hasta ahora, solo pude implementar una solución alternativa, es decir, copiar primero Pixel() la región requerida y luego aplicar Filter() en su lugar. ¿Puede alguien probar que es un error y que yo no estoy haciendo algo mal?
PD: Estoy usando FlashDevelop con el objetivo del proyecto siendo Flash Player 10.3, y no estoy al tanto de si el FP11 corrige esto.
¡Gracias por intentar una prueba independiente! ¿Intentó compilarlo con el objetivo de FP11 y comprobar si funciona igual allí? – Vesper
@Vesper Sí, lo probé en 10 y 11. El mismo resultado en ambos (la captura de pantalla es de 11) – Dave