haxe nme를 사용하여 플래시 타겟에 대한 프리 로더의 배경 위에 알파 채널로 이미지를 표시하고 싶습니다. 이러한 필요성은 프리 로더 (preloader)와 관련하여 일반적으로 보입니다.haxe nme 프리 로더 렌더링 방법 투명도 비트 맵
내가 할 수있는 여러 가지 방법이 있지만 그 중 하나에 행운을 가져다줍니다. 기본 NMEPreloader를 상속 한 사용자 정의 Preloader 클래스를 만들 때 모든 내 흔적 &의 오류가이 클래스에 있습니다.
방법 # 1 - nme.Assets 접근 - 런타임 오류
나는 프리 로더의 constructer에 전화 Assets.loadBitmapData("assets/img/miniMoon.png")
을 시도했다. 오류가 런타임에 발생합니다
[Fault] exception, information=ArgumentError: Error #2015: Invalid BitmapData.
호출 스택 :
flash.display::BitmapData/ctor
flash.display::BitmapData
NME_assets_img_minimoon_png1 at H:\MWHx\export\flash\haxe\ApplicationMain.hx:2053
Type$/createInstance at C:\Motion-Tween\haxe\std\flash\_std\Type.hx:136
nme.installer::Assets$/getBitmapData at H:\MWHx\export\flash\haxe\nme\installer\Assets.hx:721
Preloader at H:\MWHx\source\Preloader.hx:55
...
나는 nme.Assets 클래스는 사전로드하는 동안 사용할 준비가되었는지 궁금합니다. -
방법 # 플래시 방법 2 삽입 투명성
가 삽입을 사용하는 NME의 찬성이 아니다 Throuth없이 렌더링,이 시도 :
@:bitmap("assets/img/miniMoon.png") class BDmoon extends BitmapData {}
...
var moon:Bitmap;
...
moon = new Bitmap(new BDmoon(32,32,true,0x00000000));
그냥 실행을하지만 이미지가 표시 투명도가 없으면 알파 0을 가진 모든 픽셀이 배경에 대해 흰색으로 렌더링됩니다.
추가 테스트로 나는 이미지를 통해 볼 수있는 moon.alpha = 0.5;
을 사용합니다. 그래서 이것은 nme에 임베딩하는 동안 알파 채널 값을 잃어 버리는 문제입니다.
작은 애니메이션이나 작은 게임이있는 프리 로더는 재미있을 수 있습니다. 나는 이것을위한 해결책이 있기를 바랍니다. 감사!
참조 : 가 NME forum topic : Embed Transparent Png Image
네번째의 param을 0x00000000 실제로 삽입 비트 맵에 대해 중요하지 않다. 왜냐하면 이미지 파일의 투명 픽셀 0x0조차도 모든 단일 픽셀이 채우기 색상을 대체하기 때문입니다. 어느 쪽이든 작동합니다! 어쨌든. –