AS3 - ровно 23 пустых альфа-канала, изображения под остановкой рисования
Я заметил, что, пытаясь нарисовать большое количество кругов, иногда возникал какой-то визуальный баг, из-за которого некоторые круги не рисовались должным образом. Что ж, я сузил его и заметил, что если в одном и том же месте есть 23 или более объектов с 00 для значения альфа, то объекты ниже не рисуют. Похоже, что это на попиксельной основе, так как части изображения по-прежнему рисуются.
Первоначально эта проблема была замечена с классом, который унаследовал Sprite. Также было подтверждено, что это проблема со спрайтами, а теперь и с битмапами. Если кто-то может найти класс более низкого уровня, чем Bitmap, которыйне Если у вас есть эта проблема, пожалуйста, говорите, чтобы мы могли попытаться найти причину проблемы.
Я подготовил небольшой тестовый класс, который демонстрирует, что я имею в виду. Вы можете изменить целочисленное значение в строке 20, чтобы увидеть три теста, которые я придумал, чтобы ясно показать проблему.
Есть ли какое-то решение, или это просто предел, с которым мне приходится работать? Кто-нибудь испытывал это раньше? Возможно ли, что я делаю что-то не так, несмотря на пустую реализацию?
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.Bitmap;
import flash.display.BitmapData;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
Test(3);
}
private function Test(testInt:int):void {
if(testInt==1){
addChild(new Bitmap(new BitmapData(200, 200, true, 0xFFFF0000)));
for (var i:int = 0; i < 22; i++) {
addChild(new Bitmap(new BitmapData(100, 100, true, 0x00000000)));
}
}
if(testInt==2){
addChild(new Bitmap(new BitmapData(200, 200, true, 0xFFFF0000)));
for (var j:int = 0; j < 23; j++) {
addChild(new Bitmap(new BitmapData(100, 100, true, 0x00000000)));
}
}
if(testInt==3){
addChild(new Bitmap(new BitmapData(200, 200, true, 0xFFFF0000)));
for (var k:int = 0; k < 22; k++) {
addChild(new Bitmap(new BitmapData(100, 100, true, 0x00000000)));
}
var M:Bitmap = new Bitmap(new BitmapData(100, 100, true, 0x00000000));
M.x += 50;
M.y += 50;
addChild(M);
}
}
}
}