gotoAndPlay «прилипает» к целевому кадру на два кадра - PullRequest
0 голосов
/ 07 октября 2011

Это абсолютно бессмысленно для меня.

Я звоню gotoAndPlay(1) каждые 8 ​​кадров:

public function advance():void {
    walkDistance += 2;
    if(walkDistance >= 16) {
        walkDistance -= 16;
        // update tile
        gotoAndPlay(1);
    }

    trace(currentFrame);
}

Это внутри моего класса Player. advance () вызывается из моего обработчика ENTER_FRAME.

Однако результатом этого является то, что анимация игрока зацикливает кадры 1,1,2,3,4,5,6,7. Я проверил это, добавив числа от 1 до 8 в качестве текстовых полей в анимации. трассировка (currentFrame) совпадает, Я получаю кадр 1 дважды .

Я уверен, что не вызывает gotoAndPlay где-либо еще. Я проверил это, перегрузив его:

override public function gotoAndPlay(frame:Object, scene:String = null):void {
    super.gotoAndPlay(frame, scene);
    trace("GOTOANDPLAY " + frame);
    trace((new Error).getStackTrace());
}

Результат обоих наборов трасс:

GOTOANDPLAY 1
Error
    at com.nitrome.blank::Player/gotoAndPlay()
    at com.nitrome.blank::Player/advance()
    at com.nitrome.blank::Level/advance()
at com.nitrome.blank::Controller$/enterFrame()
1
1
2
3
4
5
6
7
GOTOANDPLAY 1
Error
    at com.nitrome.blank::Player/gotoAndPlay()
    at com.nitrome.blank::Player/advance()
    at com.nitrome.blank::Level/advance()
    at com.nitrome.blank::Controller$/enterFrame()
1
1
2...

Итак, как вы можете видеть, я вызываю gotoAndPlay (1) один раз, но я получаю кадр 1 дважды.

Что может вызвать это? Я не могу воспроизвести это в любом простом тесте. Это должно быть столкновение с чем-то еще, что я написал, но я не могу понять, что вызвало бы это. Когда именно currentFrame продвигается по отношению к событию stage ENTER_FRAME? Возможно ли, что что-то может привести к тому, что это будет пропущено один раз?

1 Ответ

0 голосов
/ 07 октября 2011

Longshot (очень длинный, но я бы хотел помочь);Я ничего не могу понять в коде, который вы показываете.Почему вы звоните walkDistance -= 16;, а не walkDistance = 0;?Может быть, вы могли бы отслеживать WalkDistance?Если что-то с walkDistance идет не так, это может быть вызов gotoAndPlay дважды.

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