2012-02-22 4 views
3

Android에서 도움이 필요합니다. 슬롯 머신 게임을 만들려고합니다. 그래서 저는 AnimationDrawable을 3 개의 휠에 사용하고 있습니다. 는Android : AnimationDrawable에서 현재 프레임을 얻는 방법

android:background="@drawable/animwheel" 

이제 배경 : 나는 속성 안드로이드를 사용하여 메인 레이아웃의 3 가지보기 (세 whells)의 애니메이션 목록을 퍼트

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/animWheel" 
android:oneshot="false" > 

<item 
    android:drawable="@drawable/fruits1" 
    android:duration="200"/> 
<item 
    android:drawable="@drawable/fruits2" 
    android:duration="200"/> 
<item 
    android:drawable="@drawable/fruits3" 
    android:duration="200"/> 
</animation-list> 

다음은 animwheel.xml 파일입니다 사용자는 세 가지 다른 버튼을 클릭하여 애니메이션을 중지 할 수 있습니다. 문제는 뷰가 현재 표시하고있는 그림이 무엇인지 어떻게 알 수 있습니까? getCurrentFrame() 메소드 또는 이와 유사한 것이 있습니까?

미리 감사드립니다.

+2

여기에서 AnimationDrawable (http://goo.gl/e7kFU)를 읽은 다음에는 변수 이름이 mCurFrame 인 애니메이션 애니메이션 프레임을 추적합니다. 그러나 불행히도, 그것은 사적입니다. 그들이 공개로 설정하면 더 유용 할 것입니다. – anticafe

답변

14

'getCurrentFrame()'과 같은 함수가 응용 프로그램을 실행할 때마다 바뀌는 16 진수 값을 반환하므로 동일한 문제가 발생하여 모든 함수를 시도했지만 성공하지 못했습니다. 문제 및 희망을 해결할 수 있습니다.

프레임의 이미지 이름 ('fruits1')을 얻는 대신 프레임의 위치를 ​​가져 와서 사용자가 멈춘 애니메이션을 프레임 'fruits2' , 0은 프레임 'fruits1'이므로 프레임 번호는 1입니다. 어떻게 할거 니?

// Create the animation 
myImage.setBackgroundResource(R.anim.myanimation); 
myAnimation = (AnimationDrawable) myImage.getBackground(); 

당신이 애니메이션을 중지하면이 같은 수행

myAnimation.stop(); 

// The variable that will guard the frame number 
int frameNumber; 

// Get the frame of the animation 
Drawable currentFrame, checkFrame; 
currentFrame = myAnimation.getCurrent(); 

// Checks the position of the frame 
for (int i = 0; i < myAnimation.getNumberOfFrames(); i++) { 
    checkFrame = myAnimation.getFrame(i); 
    if (checkFrame == currentFrame) { 
     frameNumber = i; 
     break; 
    } 
} 

따라서, 변수 'frameNumber이', 0, 귀하의 경우, 1 또는 2 프레임의 수를 보호됩니다 프레임이 많은 경우 배열을 사용하여 프레임 번호를 기반으로 이름 ('fruits1', 'fruits2'...)을 반환하는 함수를 수행 할 수 있습니다.

관련 문제