Android - поворот фонового изображения по фиксированной позиции экрана - PullRequest
2 голосов
/ 25 февраля 2012

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

Если я не перемещаю (не перевожу) изображение и вращаю его по первой центральной точке изображения, фоновое изображение вращается правильно вокругэта точка.Однако если я вообще перевожу фоновое изображение, вращение перестает быть точным.Похоже, что поворот применяется на основе изображений сверху, слева, а не слева вверху экрана, поэтому, если я перевожу изображение на 100 единиц вниз по экрану, оно теперь поворачивается на 100 единиц ниже того места, где я хочу.

В основном я ищу способ поворота изображения независимо от того, где оно расположено на экране, на фиксированной позиции на экране, которая никогда не меняется.Надеемся, что это создаст иллюзию, что изображение в нижней части экрана движется, когда на самом деле движется фон.Спасибо.

Вот несколько простых фрагментов кода того, что я делаю, не уверен, действительно ли это поможет:

m_X & m_Y - переменные, удерживающие наклон устройства

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

Update Function:
protected void Update(float a_GameTime)
{
    super.Update(a_GameTime);

    m_CharacterAnimator.Update(a_GameTime);             

    if ((m_CurrentCharacterDirection.contains(LEFT) || m_CurrentCharacterDirection.contains(RIGHT)) && (m_X > 1.0f || m_X < -1.0f))
    {
        m_BackgroundWorldMatrix.preRotate(m_X * .05f, 264, 628);
    }
    if ((m_CurrentCharacterDirection.contains(FORWARD) || m_CurrentCharacterDirection.contains(BACKWARD)) && (m_Y > 1.0f || m_Y < -1.0f))
    {
        m_BackgroundWorldMatrix.postTranslate(0.0f, m_Y * -0.25f);
    }       
}

Draw Function:
protected void Draw(Canvas a_Canvas)
{
    super.Draw(a_Canvas);

    a_Canvas.drawBitmap(m_Background, m_BackgroundWorldMatrix, null);//, m_BackgroundWorldMatrix, null);

    // Draw the animating Character
    m_CharacterAnimator.Draw(a_Canvas);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...