2015-10-14 271 views
0

我嘗試在Android中製作旋轉游戲的遊戲。 我發現很難以正確的方式旋轉圓圈。 我很想幫助如何旋轉圓圈並停止它,以便每次都得到不同的結果。 目前它已經確定了一定的時間並返回到開頭。 如果我通過這個msmallWheelBack.clearAnimation()停在它的中間,它將返回到一輪的開始。 非常感謝您的幫助。輪盤賭動漫旋轉得到它停止的位置Android

在我的代碼:

Animation animation = AnimationUtils.loadAnimation(this, R.anim.rotate_around_center_point); 
    mframeWheelBig.startAnimation(animation); 

的動畫XML:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false" > 
<rotate 
    android:duration="2500" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:repeatCount="infinite" 
    android:toDegrees="360" 
    android:fromDegrees="0" 
    android:fillAfter="true" 
    android:fillBefore="true" 
    android:fillEnabled="true"/> 
</set> 

就像我說的,這是我如何停止動畫

mframeWheelBig.clearAnimation(); 

回答

0

您可以編程設置一個隨機'toDegrees'的值。我想你也可以設置超過360度,以獲得更多的旋轉。

但是,我沒有找到該值的setter方法,所以我想你將不得不以編程方式創建動畫,使用RotateAnimation,但仍然應該很容易。

這將在3到6轉之間旋轉,並可以停在任何角度。

final static int MIN_TURNS = 3; 
final static int MORE_TURNS = 3; 
float toDegrees = 360 * MIN_TURNS + Math.random() * 360f * MORE_TURNS; 
Animation anim = new RotateAnimation(0, toDegrees); 
+0

的一個大問題是,它在阻止它開始 – gal

+0

動畫停止在它開始的地方的地方,因爲你所定義的360度,這正好是一個完整的轉身結束位置。通過爲結束位置提供隨機值,這不會發生。 – Ridcully

+0

int MIN_TURNS = 3; int MORE_TURNS = 3; float toDegrees = 360 * MIN_TURNS +(float)Math.random()* 360f * MORE_TURNS; Log.i(「toDegrees」,「」+ toDegrees);動畫動畫= new RotateAnimation(0,toDegrees,200,200); animation.setInterpolator(new AccelerateDecelerateInterpolator()); animation.setDuration(1000); animation.setFillAfter(true); – gal