2014-07-12 1 views
1

내 게임에서 SVG 파일을 사용하고 있으며 투명도와 밝기 효과를 추가하고 싶습니다. 그래서 내가 원하는 것은 그것이 보이지 않을 때까지 스프라이트가 점점 더 투명해진다는 것입니다. 이것은 사라지는 스프라이트보다 훨씬 부드럽게 보입니다. 이렇게하면 흰색 화면의 투명도가 떨어지거나 다시 흐려지는 수준 사이에서도 부드럽게 전환 할 수 있습니다. 내가 무슨 뜻인지 이해했으면 좋겠어. 이 외에도 밝기 효과가 좋을 것입니다. 스프라이트는 게임 중에 더 밝거나 어둡게 될 수 있습니다. 그럼에도 불구하고 나는이 투명 효과를 사용하기위한 해결 방법을 만들 수 있지만, 그래, 난이 없음 :svg 밝기/투명도 효과 및 필터

svg.renderToCanvas(pCanvas); 
: 이 https://androidsvg.googlecode.com/hg/doc/reference/packages.html

나는이 길에 내 svgs 렌더링 :/

내가이 라이브러리를 사용

그러나 사진으로도 변환 할 수 있습니다.

Picture pic = svg.renderToPicture(); 

이 정보가 도움이 될 수 있습니다.

나에게 도움이 될만한 것이 있습니까? 그리고 그렇지 않다면 문제를 어떻게 해결할 수 있을지 생각해보십시오.

편집 : 그래서 내 SVGs이 사람처럼 행동 iwant : 프랭크가 말한대로 http://scratch.mit.edu/projects/24634091/

+0

그러면 ImageView에 그림이 할당됩니까? 그렇다면 해당 ImageView에 알파를 설정하고 루프에서 완전히 투명하게 만들 수 있습니다. –

+0

기다림, ImageView는 무엇입니까? 그래서 저는 Gameview를 만드는 MainActivity를 가지고 있습니다. GameView는 SurfaceView를 확장하므로 ImageView로 SurfaceView를 대체해야합니다. 좋아요, 고마워요. 나는 지금 그 일을하기 위해 무엇을 더해야할지 모르지만, 이제는 적어도 google imageView를 알아야합니다. 고마워요! :) btw 내 acutal 프로젝트 작동 방식 : onCreate에서 활동 세트가 새 GameView로 표시됩니다. 내 GameView는 Surfaceview를 확장하고 thread 및 Sprite를 surfaceCreated에 만듭니다. Thread는 내 GameView의 onDraw를 호출합니다. 이것은 모든 Sprite의 onDraw를 호출합니다. –

+0

ImageView는 이미지 (및 선택적으로 배경)를 포함하도록 만들어진 컨트롤입니다. 그것은 대부분의 뷰 (그래서, GameView 그것을해야합니다)와 마찬가지로, setAlpha 메서드가 있습니다. 알파를 점진적으로 0으로 설정하는 루프를 수행하면 사라지는 결과를 얻게됩니다. –

답변

0

당신은, 이미지 뷰와 setAlpha()를 사용할 수 있습니다. 또는 draw() 메서드에서 스프라이트를 캔바스에 렌더링하는 것이 더 쉽습니다.

게임을 작성하는 경우 게임 루프의 SVG 렌더링이 충분히 빠르지 않을 수 있습니다. 따라서 모든 SVG 스프라이트를 미리 비트 맵 (즉, 시작할 때)으로 렌더링하고 캔버스에 그려야 할 수도 있습니다.

Paint p = new Paint(); 
p.setAlpha(alpha); 
canvas.drawBitmap(sprite, x,y, p); 
+0

감사합니다. 그것들을 미리 비트 맵으로 렌더링하는 것이 좋겠다. 나는 또한 이것을 시도했지만 결코 해결책을 찾지 못했다. SVG를 그림으로 변환 한 것은 전부 였지만 그림과 함께 렌더링 할 수있는 방법이 없었습니다. 또한 실제 라이브러리에서 SVG를 비트 맵에 렌더링하는 작업 코드가 없음을 발견했습니다. 이전 버전에서는 SvgParser를 사용하여 드로어 블을 가져올 수 있었지만 최신 버전에서는 이와 같은 것이 존재하지 않습니다. svgs를 bmp로 변환하는 해결 방법을 알고 있습니까? –

+0

라이브러리의 홈 페이지에서 SVG를 비트 맵으로 렌더링하는 방법의 예가 있습니다. –

+0

이 것을 의미합니까? 'SVG svg = SVG.getFromAsset (getContext(). getAssets(), filename); if (svg.getDocumentWidth()! = -1) { 비트 맵 newBM = Bitmap.createBitmap (Math.ceil (svg.getDocumentWidth()), Math.ceil (svg.getDocumentHeight()), Bitmap.Config.ARGB_8888); 캔버스 bmcanvas = 새 캔버스 (newBM); svg.renderToCanvas (bmcanvas); }' newBM이 svg의 크기를 가지고 있기 때문에 어디서 비트 맵이 표시되는지 모르겠지만 다른 용도로 비트 맵을 얻지 못합니다. ( –