2012-01-30 2 views
3

В моей попытке создать простую игру в понг, я столкнулся с очень странной и порой серьезной визуальной ошибкой.
Когда я устанавливал мяч (библиотека Flash CS 5.5 Library MovieClip) в движении, двигаясь по экрану с довольно высокой скоростью, я заметил, что иногда, края шара будут обрезаны на короткое время в направление движется.Визуальная ошибка при перемещении MovieClip

Когда это происходит, похоже, что позиция ball MovieClip немного опережает собственную границу, и, таким образом, часть, которая находится за пределами границы, не может быть нарисована.

Вот картина, которая иллюстрирует, как это выглядит - по крайней мере для меня:
enter image description here

Вы также можете просмотреть файл .swf онлайн здесь: http://megaswf.com/serve/2099366

Некоторые технические данные:

  1. Я не смог захватить скриншот, независимо от того, насколько сильно я пытался.
  2. Иногда я открывал .swf, и ошибка была бы почти несуществующей, в то время как в других случаях это было очень вопиющим.
  3. Я использую функцию события EnterFrame для увеличения/уменьшения x и y позиции MovieClip.
  4. Я никогда не сталкивался с такой проблемой в любом приложении Flash, на этом компьютере или других.
  5. Усечение/округление x и y Значения MovieClip не помогли. Также не установлено значение cacheAsBitmap.

Что может быть причиной этой проблемы в мире?

Заранее спасибо.

+0

Я не мог повторить вашу проблему - возможно, у вас установлена ​​глючная версия Flash Player? Я использую 11.1. – Marty

+0

На самом деле я получаю эту проблему время от времени. Это происходит, когда большие контрастные области движутся быстро. Менее заметен с более высоким FPS. Возможно, это будет система. Попробуйте переместить окно медленно влево-вправо-влево-вправо ... Говоря о том, что это на окнах? –

+0

На моем движке Mac немного вяло, но не так, как вы описали (и я действительно знаю, что вы имеете в виду). И да, это невозможно поймать с помощью печатного экрана. Если вы использовали Таймер, я бы заподозрил неравномерную частоту кадров. Вы читали [это] (http://www.craftymind.com/2008/04/18/updated-elastic-racetrack-for-flash-9-and-avm2/)? Может быть так. Какие FPS вы используете? –

ответ

0

Я не знаю точной технической причины для этого (я предполагаю, что это связано с частотой обновления экрана против FPS), но я уверен, что это экранный артефакт, а не реальная ошибка рендеринга (которая поэтому вы не сможете получить его на скриншоте). Вы можете попробовать несколько вещей, чтобы уменьшить эффект, как какой-то размытость:

//on your game loop 
mc.filters = [new BlurFilter(Math.abs(speed.x), Math.abs(speed.y),3)]; 

Или другие визуальные хитрости ... но голый в виду, что это очень заметно на черном круг/белый фон ситуации , однако на более сложных сценах глаз намного более прощает.

Я не уверен, что есть техническое решение (надежное на всех машинах/операционных системах/браузерах), но вы также можете попробовать такие вещи, как optimizing your game loop (blitting + constant framerate + updateAfterEvent()) ... хотя я не уверен результат будет таким, как хотелось бы думать (я предполагаю, что это может помочь немного).

1

У меня была такая же проблема, при тех же ограничениях. Поскольку я добавил контент в свою игру, это стало проблемой.Эти опции значительно уменьшить артефакт:

  • Включить деблокирование JPEG и повышения качества JPEG (параметры публикации)
  • Уменьшение фреймрейт
  • Включить аппаратное ускорение (параметры публикации)
  • Улучшайте Отладка Flash-плеер для Flash Professional
  • Use the non-integrated flash version in Google Chrome (Это позволило решить случайные сбои и полноэкранное заикание для меня)
+0

Извините за все изменения, делая много тестов/отладки, как только я узнал, что деблокирование в основном устраняет проблему для меня. –

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