Flixel - Альфа не работает должным образом - PullRequest
2 голосов
/ 17 января 2012

У меня происходит нечто странное, когда я несколько раз обновляю альфу FlxSprite, чтобы она исчезла. Вместо того, чтобы потратить 150 секунд на полное исчезновение (мне на самом деле нужно 15 секунд), оно исчезает в течение, возможно, 2 секунд. Я попытался отследить фактическое альфа-значение, и спрайт невидим, когда альфа-значение составляет около 0,95 (непрозрачность 95%, то есть слегка прозрачная).

Кто-нибудь знает, как заставить альфу работать в Flixel должным образом?

override public function update():void {
    lifespan += FlxG.elapsed;

    if (lifespan > 3) {
        alpha = (1 - ((lifespan - 3) / 150)); // <--- this line

    }

    if (alpha < 0.01) {
        State.s.remove(this, true);
    }
    super.update();     
}

Ответы [ 2 ]

1 голос
/ 25 января 2012

В Flixel есть ошибка.Если используется анимированный спрайт, а текущий кадр находится за пределами диапазона таблицы спрайтов, альфа не работает правильно.То же самое происходит, если используется makeGraphic().

Эта ошибка была зарегистрирована в списке проблем Flixel github, и, надеюсь, она будет исправлена ​​в следующей версии.

1 голос
/ 19 января 2012

Я скопировал ваш код в пустой проект Flixel 2.55, и он работал точно так, как ожидалось. Вы уверены, что в вашем проекте больше ничего не мешает переменной продолжительности жизни или альфа-версии спрайта? Попробуйте его с новым проектом и посмотрите, сталкивались ли вы с той же проблемой.

Просто подсказка, вы можете использовать FlxG.state для ссылки на текущее состояние в любое время, нет необходимости хранить отдельную ссылку. Кроме того, альфа автоматически ограничивается до 0,1, так что вы можете проверить «if (alpha == 0)», не беспокоясь о том, что ваше альфа-значение переходит в минус.

...