Ich habe den folgenden Code, gemacht für nur testen, da dies eine Art von Fehler war ich nageln wollte:Das Anwenden des Shader-Filters auf ein BitmapData-Objekt ignoriert das übergebene Rechteck - wie wird der Shader-Filter richtig angewendet?
_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);
}
Dann fahre ich durch _sequence, um zu sehen, ob Wechsel tatsächlich Rechteck etwas tut. Es tut nichts, wenn _shaderFilter tatsächlich ein Shader-Filter ist. Das Testen mit einem der integrierten Flash-Filter funktioniert wie vorgesehen, aber mit ShaderFilter funktioniert es manchmal so, als wäre das bereitgestellte Rechteck einfach sourceBitmapData.rect, was auch immer die Quell-Bitmap ist, und manchmal verhält es sich so, als ob keine Daten übergeben wurden, mit Begrenzung an einer seltsamen Position angeordnet - mit einer Bitmap der Größe 512x384 befindet sich die Kante der Region, die an den Shader übergeben wird, scheinbar an (256,192) oder der Mitte der Bitmap. Bisher konnte ich nur einen Workaround implementieren, dh zuerst copyPixels() die benötigte Region, dann applyFilter() an Ort und Stelle. Kann jemand beweisen, dass es ein Fehler ist und ich nicht etwas falsch mache?
PS: Ich benutze FlashDevelop mit Projekt Ziel als Flash Player 10.3, und ich bin mir nicht bewusst, wenn FP11 dies behebt.
Vielen Dank für einen unabhängigen Test! Haben Sie versucht, es mit dem FP11-Ziel zu kompilieren und zu prüfen, ob es dort gleich funktioniert? – Vesper
@Vesper Ja, ich habe es auf 10 und 11 versucht. Das gleiche Ergebnis in beiden (der Screenshot ist von 11) – Dave