Спрайты мигают случайным образом на Android

0

Я создал платформер-бегуновую игру, используя cocos2d-x 3.1. В этой игре экран прокручивается бесконечно, и некоторые препятствия появляются спереди на плеере, и игрок может вскакивать, чтобы избежать препятствий.

Я разработал игру на Windows и не использовал SpriteBatchNode - просто простые Sprites и эффекты частиц. В окнах все было в порядке, но когда я портировал Android, некоторые спрайты (большие и маленькие, движущиеся и в покое) начали мерцать случайно. Сначала я думал, что это порядок Z, который изменяется случайным образом, но я удалил большую часть спрайтов с экрана и увидел, что они просто моргают. Интересно, что я не мог найти общего свойства между мигающими спрайтами, но те, которые мигают всегда, мигают, а те, которые не мигают (нормальное поведение), всегда в порядке.

Я мог избавиться от этой неприятной ситуации, используя SpriteBatchNode для всех спрайтов, которые мигали. Но не мог понять, что происходит, в чем причина. Существуют ли какие-либо предположения, что может быть причиной такого поведения?

Мне все еще нужно использовать какой-то простой Sprite, чтобы иметь возможность добавлять к ним эффекты частиц. Это невозможно сделать с помощью SpriteBatchNodes и с помощью Sprite, которые создаются с помощью SpriteBatchNodes следующим образом: Sprite::createWithSpriteFrameName("my.png").

Извините, что я не разделяю код. Я просто не знаю, что поделиться - проект огромен. Но если вам нужны какие-то конкретные детали, я мог бы поделиться, конечно.

  • 0
    Вы пробовали другое оборудование Android? SpriteBatchNode действительно поможет. На форумах Cocos2d-x недавно состоялось обсуждение SpriteBatchNode и Android.
  • 0
    @GameDeveloper "Я мог бы избавиться от этой неприятной ситуации с помощью SpriteBatchNode ...", так что да, я пытался :). Я надеялся на ссылку "некоторое недавнее обсуждение SpriteBatchNode и Android".
Теги:
cocos2d-x
cocos2d-x-3.0

1 ответ

1
Лучший ответ

@GameDeveloper Я наконец смог воспроизвести проблему случайного мигания. Насколько я понимаю, это проблема порядка Z. Я воспроизвел его следующим образом. Я создаю пустой спрайт, и в тот спрайт, который я создаю, и addChild то же изображение. При нажатии экрана я добавляю еще один спрайт в том же положении, что и краном. После 16-го нажатия каждый кран меняет некоторые из Z-ордеров уже добавленных спрайтов. Дело в том, что каждый спрайт, который я добавляю, не указываю более высокий порядок Z. Но я не могу понять, какое магическое число - это 16. Кстати, я также реализовал отмену функциональности, когда я удаляю последний добавленный спрайт. Если я откажусь иметь не более 16 спрайтов, все в порядке. Как только я снова превышу 16, начинается рандомизация порядка Z.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню