Android-спрайт перемещается, когда он должен быть стационарным - PullRequest
1 голос
/ 30 сентября 2011

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

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

Я использую только 1 строку для спрайта, и я использовал gimp для создания спрайта и сохранил его как png.

1 Ответ

0 голосов
/ 30 сентября 2011

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

Я думаю, что нашел свой ответ, хотя у меня был спрайт png в папке, которую я создал, с именем drawable, куда я помещал все изображения, я попробовал это снова, но на этот раз поместил спрайт в другие папки, и он не сделал переместить, я попытался также масштабировать спрайт, что сделало его немного шатким, я надеялся использовать вместо этого масштабирование, чтобы оно оставалось одинаковым для всех экранов, это работает для обычных изображений, но для спрайтов это вызывает некоторые проблемы, может быть, я Попробуйте сделать это с наибольшим размером в папке drawable-large-mdpi и посмотрите, не вызывает ли это каких-либо проблем. Я обновлю этот метод и сообщу вам. Было бы неплохо иметь только одно изображение и масштабировать его вместо размера экрана.

Хорошо, я наконец нашла ответ, и он может помочь тем, кто создает спрайты, ширина при делении на количество кадров должна быть целым числом, так как измерения в int, а не в float или double, поэтому он перемещается, потому что когда кадр получает разделив его, мы получили дробную часть, которая заставила его двигаться (я полагаю) независимо от того, что было дополнительным измерением с плавающей точкой. Пример: если спрайт был 100 пикселей в высоту и 1082 пикселей в ширину, и у меня было 15 кадров, ширина каждого кадра составляла бы 72,133333333px в ширину для каждого кадра, что приводило к ошибке, которая приводила бы к перемещению изображения на дополнительную длину, сохраняя анимацию в хорошем состоянии. теперь, если бы он был шириной 1080px, каждый кадр был бы шириной 72px - целое целое число, а затем идеально анимировался. Таким образом, для тех, кто создает свои собственные спрайты, убедитесь, что широкие равны целому числу, когда кадры разделены (Моя проблема была в том, что я создавал одно изображение, уменьшая его, а не проверяя ширину каждого кадра, поэтому обычно работает только один размер изображения). Иногда мне везло, и я получал два, я должен был понять это, потому что все работает в int, а не в float для измерения ширины. Надеюсь, что это поможет кому-то еще делать спрайты. Sam

...