2012-01-17 3 views
2

FlxSprite의 알파를 반복적으로 업데이트하여 페이드 아웃 할 때 이상한 점이 있습니다. 완전히 페이드 아웃하기 위해 150 초가 걸리지 않고 (실제로 15 초가 필요함), 아마도 2 초 이상 페이드 아웃됩니다. 실제 알파 값을 추적하려했는데 알파 값이 0.95 (95 % 불투명도, 즉 약간 투명 함) 일 때 스프라이트가 보이지 않습니다.Flixel - 알파가 제대로 작동하지 않습니다.

아무도 내가 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();  
} 

답변

1

현재 Flixel에 버그가 있습니다. 애니메이션 된 스프라이트가 사용되고 현재 프레임이 스프라이트 시트의 범위를 벗어나면 알파가 제대로 작동하지 않습니다. makeGraphic()을 사용하는 경우에도 마찬가지입니다.

이 버그는 Flixel github 문제 목록에 기록되었으며 잘하면 다음 버전에서 수정 될 예정입니다.

+0

좋은 소식! 이 버그는 Flixel v2.56 커뮤니티 버전에서 수정되었습니다 : https://github.com/FlixelCommunity/flixel – IQAndreas

1

비어있는 Flixel 2.55 프로젝트에서 코드를 복사하여 예상대로 작동했습니다. 평생 변수 또는 스프라이트의 알파를 방해하는 프로젝트가 없다는 것이 확실합니까? 새로운 프로젝트로 시도해보고 같은 문제가 계속 발생하는지 확인하십시오.

FlxG.state를 사용하면 항상 현재 상태를 참조 할 수 있으므로 별도의 참조를 저장할 필요가 없습니다. 또한 알파는 자동으로 0,1에 고정되므로 알파 값이 음수가되는지 걱정하지 않고 'if (alpha == 0)'을 테스트 할 수 있습니다.

+0

깨끗한 프로젝트를 시도해 보겠습니다.하지만 프로젝트는 매우 간단합니다. 이전에 알파로 엉망이었던 적이 없었습니다. 내 스프라이트가 ~ 50 % 불투명도 픽셀의 일부를 가지고 있습니다. –

+0

처음 시작했을 때 애니메이션 프레임을 통과하는 부분을 생략했습니다. 스프라이트 시트의 끝을지나 프레임 하나를로드하라는 +1 오류가 있습니다. 그 오류를 수정하면 문제가 해결되었습니다. 나는 또한'makeGraphic()'을 시도했으며 재사용 할 수없는 비트 맵에서이 오류를 나타내는 것처럼 보였다. 나는 Flixel의 버그 목록에 기록 할 것이다. –

관련 문제