Визуальная ошибка при перемещении мувиклипа - PullRequest
3 голосов
/ 30 января 2012

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

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 25 ноября 2012

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

  • Включить разблокировку JPEG и повысить качество JPEG (параметры публикации)
  • Уменьшить частоту кадров
  • Включить аппаратное ускорение (опубликовать настройки)
  • Обновите проигрыватель Flash Debug для Flash Professional
  • Использование неинтегрированной флэш-версии в Google Chrome (Это помогло мне решить случайные сбои и заикание на весь экран)
0 голосов
/ 30 января 2012

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

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

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

Я не уверен, что есть техническое решение (надежное для всех машин / ОС / браузеров), но вы также можете попробовать что-то вроде оптимизация игрового цикла (блин + постоянная частота кадров + updateAfterEvent () ) ... хотя я не уверен, что результат будет таким, как хотелось бы думать (я предполагаю, чтоможет немного помочь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...