0

Я пытаюсь использовать 3D-проекцию через часть PixelBender из this demo by unitzeroone, которая сама по себе довольно милая, даже без пиксельного рисунка алхимии. Проблема в том, что она не работает при просмотре в Flash Player 11+. Предварительный просмотр SWF прекращается при публикации Flash CS4 или CS5, но не CS5.5. Когда SWF открывается локально, наши настройки, похоже, используют отладочный проигрыватель FP10, который отлично работает, но если вы перетащите тот же SWF в браузер (chrome/FF) с последним установленным Flash Player (11+), он выдает следующую ошибку на ByteArray.readFloat():Flash Player 11 vs. 10 Ошибка ByteArray # 2030 с PixelBender

Error #2030: End of file was encountered. 

... Брошенный в течение ByteArray.readFloat() ... самый первый раз, это называется. Сразу после того, как я сделал цикл ByteArray.writeFloats, поэтому я знаю, что ByteArray заполнен данными в этот момент. Опять же - этот код отлично работает на FP10, но не работает на FP11. Я попытался поймать ошибку, и она прослеживает ошибку, как и следовало ожидать, но я все еще зациклился на том, как заставить этот код ByteArray работать в Flash Player 11.

Я искал это как лучше всего может, и нашел много ссылок на ошибки # 2030 и ByteArrays, но ни один из них, похоже, не отличается таким образом между FP10 и FP11. Here's the SWF.

Любые идеи? Есть ли проблема с функциями write() или read() для ByteArrays, которые присутствуют только в FP11? Есть ли обходной путь?

Спасибо!

-случае

ответ

2

Я понял это, хотя я не совсем понимаю, в чем проблема. Flash Player 11, похоже, требует, чтобы я сбросил позицию на моем выходе PixelBender ByteArray на 0 сразу после запуска ShaderJob.

var job:ShaderJob = new ShaderJob(shader, MyByteArray, 1024, 1); 
job.start(true); 
MyByteArray.position = 0 

FP10 не требовал этого - я предполагаю, что он автоматически сбросил позицию после ShaderJob? Должно быть, это до тонкой реализации PixelBender в двух версиях флеш-плееров?

Смежные вопросы