2016-08-15 4 views
0

저는 서버에서 9 개의 이미지를 가져와 3x3 격자보기로 보여주고있는 간단한 메모리 게임을하고 있습니다. 이미지가로드되면 사용자는 15 초 동안 이미지를 볼 수 있습니다. 15 초 후 모든 이미지를 넘겨야합니다. 이제 15 초 후에 격자보기 아래에 하나의 이미지보기가 표시됩니다. 이 이미지보기에서 위의 9 개 이미지 중에서 하나를 무작위로 선택한 이미지를 보여줍니다. 이제 사용자는 격자보기에서 이미지의 정확한 위치를 선택해야합니다. 사용자가 그리드보기에서 올바른 위치를 선택하면 올바른 이미지로 이미지를 뒤집을 필요가 있습니다. 사용자가 모든 이미지를 뒤집어 놓으면 게임이 종료됩니다.메모리 게임에서 플리퍼를 구현하는 방법은 무엇입니까?

이미지를 가져 와서 격자보기로 표시했지만 뒤집어서 뒤집어 이미지를 뒤집을 방법을 모르겠습니다. 안드로이드에서 플립 애니메이션을 선택했는데 회전 이미지 용입니다. 제 경우에는 뒤집을 때 이미지가 보이지 않아야하고 뒤집을 때 이미지가 보여야합니다. 이 경우 뒤집기 및 뒤집기를 구현하는 방법은 무엇입니까?

답변

0

Camera 클래스를 소개해 드리겠습니다. 아니, 하드웨어 카메라가 아닙니다.

Camera | Android Developers

graphics Camera입니다. 표준 배율, 회전 및 애니메이션은 모두 x-y 평면에서만 작동하지만 Camera은 이미지에 perspective 인을 제공하는 z 축을 도입하고 사용자가 2 대신 3 차원으로 변형 할 수 있도록합니다.

rotateY() 메서드에 가장 관심이있을 것입니다. 이것은 뒤집어 진 카드 나 타일의 애니메이션을 만드는 데 도움이되는 방법입니다.

  1. : 당신이, 당신은 여러 가지 방법으로 이것을 사용할 수 있습니다 변환 할 수있는 매트릭스가 이제

    private Matrix mMatrix; 
    
        private Camera mCamera; 
    
        // val is animation value between -1.0 and 1.0 
        private void updateImageMatrix(float val) { 
    
         // turn the animation value into an angle from 
         // 0 to -90, then +90 to 0 degrees 
         float degrees = 90.0F * (Math.signum(val) - val); 
    
         mCamera.save();    // save initial state 
         mCamera.rotateY(degrees);  // this does the flip 
         mCamera.getMatrix(mMatrix); // write the transform into the matrix 
         mCamera.restore();   // now we can reuse the Camera without re-constructing 
    
         float centerX = imageWidth/2.0F; 
         float centerY = imageHeight/2.0F; 
    
         // Y-axis is at the left edge, so to get rotation 
         // around the center, we have to move the image over 
         // first, then move it back after we rotate 
         mRotateMatrix.preTranslate(- centerX, - centerY); 
         mRotateMatrix.postTranslate(centerX, centerY); 
         // this could probably be eliminated by initializing mCamera with 
         // mCamera.setLocation(centerX, centerY, mCamera.getLocationZ()) 
    
         // the image probably isn't exactly the same size as the 
         // view, so we have to handle scaling the image to the view 
         mRotateMatrix.preScale(mScaleFactor, mScaleFactor); 
        } 
    

    : 여기

    내가 타일 플립의 Camera 클래스를 사용하는 방법

    이 행렬을 이미지 행렬로 설정하여 ImageView을 가질 수 있습니다.

  2. 사용자 정의 View을 가질 수 있습니다. t는 onDraw 및 호출을 무시 canvas.drawBitmap(mBitmap, mMatrix, null)

  3. 당신은 applyTransformation(float interpolatedTime, Transformation t)을 무시하고 반환하는 사용자 정의 Animation 클래스를 가질 수 플립, 당신은 첫 번째 애니메이션을 적용 할 것,

또한 매트릭스를 기반으로 Transformation 업데이트 이미지를 0에서 -90도까지 확대 한 다음 해당 이미지를 숨기고 나머지는 90도에서 0도까지 애니메이트하면서 두 번째 이미지를 표시합니다.

마지막으로 한 가지. 3x3 격자가 있습니다. 현실적인 3 차원 뒤집기 효과를 얻으려면 mCamera.setLocation()을 사용해 타일에 따라 x 및 y 값을 다르게하여 맨 아래의 타일이 아래에서부터 플립을 보는 것처럼 보일 것입니다. 오버 헤드 등에서 플립을보고 있습니다.

관련 문제