Я делаю игру с простым управлением мыши. В принципе, если игрок перемещает курсор вправо от символа, он движется вправо и наоборот. Но если вы перестанете перемещать мышь, Flash игнорирует условие, которое останавливает символ, пока вы не переместите мышь снова, так что парень просто продолжает двигаться в том же направлении, пока вы не переместите курсор. Почему это происходит, если mouseX и позиция игрока обновляются каждый кадр? Вот входные условия:AS3: mouseX не будет обновляться, пока мышь не будет перемещена
stage.addEventListener(MouseEvent.MOUSE_MOVE, CTRLupdateMousePosition)
private function CTRLupdateMousePosition(e:Event):void
{
if (mouseX > shaman_legs.x-2 - shaman_legs.width/2 && mouseX < shaman_legs.x+2 + shaman_legs.width/2) {
CTRLleftButtonDown = false
CTRLrightButtonDown = false
} else if (mouseX < shaman_legs.x - shaman_legs.width/2 && GlobalVariableLibrary.COREgamePaused == false) {
CTRLleftButtonDown = true
CTRLrightButtonDown = false
} else if (mouseX > shaman_legs.x + shaman_legs.width/2 && GlobalVariableLibrary.COREgamePaused == false) {
CTRLleftButtonDown = false
CTRLrightButtonDown = true
}
}
А вот код, который реагирует на вход игрока при перемещении персонажа и играть анимации:
addEventListener(Event.ENTER_FRAME, playerControl)
private function playerControl(e:Event):void {
trace("LeftDown:"+CTRLleftButtonDown, "RightDown:"+CTRLrightButtonDown)
boxSensor.x = shaman_legs.x
soulCatcher.x = shaman_legs.x
if (CTRLleftButtonDown == false && CTRLrightButtonDown == false && GlobalVariableLibrary.COREgamePaused == false) {
shaman_legs.gotoAndPlay("idle")
shaman_armsDown.gotoAndPlay("idle")
} else if (CTRLleftButtonDown && shaman_legs.x > 40 && GlobalVariableLibrary.COREgamePaused == false) {
shaman_legs.gotoAndPlay("walkLeft")
shaman_armsDown.gotoAndPlay("walk")
shaman_legs.x -= GlobalVariableLibrary.CHARspeed
shaman_mask.x -= GlobalVariableLibrary.CHARspeed
shaman_armsDown.x -= GlobalVariableLibrary.CHARspeed
shaman_armsUp.x -= GlobalVariableLibrary.CHARspeed
} else if (CTRLrightButtonDown && shaman_legs.x < 760 && GlobalVariableLibrary.COREgamePaused == false) {
shaman_legs.gotoAndPlay("walkRight")
shaman_armsDown.gotoAndPlay("walk")
shaman_legs.x += GlobalVariableLibrary.CHARspeed
shaman_mask.x += GlobalVariableLibrary.CHARspeed
shaman_armsDown.x += GlobalVariableLibrary.CHARspeed
shaman_armsUp.x += GlobalVariableLibrary.CHARspeed
}
}
Вы не предоставляете достаточно информации. Где находится этот код, который вы разместили? О каком состоянии вы говорите, игнорируется? Что было результатом перехода вашего кода с помощью отладчика? Что случилось? И что вы ожидали? – null
Это функция ввода приемника событий кадра. Условие, которое я имел в виду, было первым (момент, когда курсор расположен над игроком), который должен остановить движение персонажа и его анимацию. Я пробовал отслеживать этих Bools, и они оба не переключаются на false, когда выполняется первое условие. Должен ли я опубликовать код движения? –
Измените свой вопрос, чтобы включить всю эту информацию. Это все еще очень расплывчато. введите кадр слушателя какого объекта? Да, пожалуйста, отправьте код движения. – null