2016-09-25 17 views
0

私はAndroidStudio(Libgdx、Gamemaker ...なし)でJavaとXMLだけを使ってSpace Invadersを開発しています。問題があります...あなたが私を助けてくれることを願っています。あなたは宇宙船と2つのボタン(左の1との右側に他のボタンを見つけることができるRelativeLayoutの下部に、見ることができるように横に移動<ImageView>を押すと<Button>

まず第一に、ここで私のapp design. enter image description here

です船)。ボタンは見えません。左ボタンにはidとして "control_izquierda"、右ボタンに "control_derecha"があります。

左ボタンを押すと宇宙船が右に移動し、右ボタンを押すと宇宙船が左に移動します(これは完全に機能します)。

私の問題ボタンの1つを押している間に宇宙船を動かすことです(ボタンを押したまま、宇宙船はに移動する必要があります)。私はこれを試す様々な方法を試しましたが、正しい解決策を見つけることができません。

は、ここに私のXMLは、 "actualizaPosicion" 方法で呼び出して、私のJavaコードボタンのいずれかをクリックする

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    public void actualizaPosicion(View v) { 
     switch (v.getId()) { 
      case R.id.control_derecha: 
       findViewById(R.id.nave).setX(findViewById(R.id.nave).getX() - 30); 
       break; 
      case R.id.control_izquierda: 
       findViewById(R.id.nave).setX(findViewById(R.id.nave).getX() + 30); 
       break; 
     } 
    } 

} 

です。このメソッドは、右または左のボタンがクリックされたかどうかを検出し、次に宇宙船の位置をアップロードします(idは "nave"です)。ボタンが押されているときに宇宙船が移動し、宇宙船は止まる。

私は助けていただきありがとうございます。

ありがとうございました!あなたが必要なもの

答えて

0

はあなたが基本的な流れを理解すれば、あなただけの別の値(あなたのケースでを翻訳)を使用してXMLファイルを作成する必要がありますアニメーター取り扱いアニメーションClick here to view api docs

です。したがって、クリックするJavaコード上のボタンで、このアニメーションXMLファイルを単に開始することができます。

//サンプルXML

<set android:shareInterpolator="false"> 
    <scale 
        android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
        android:fromXScale="1.0" 
        android:toXScale="1.4" 
        android:fromYScale="1.0" 
        android:toYScale="0.6" 
        android:pivotX="50%" 
        android:pivotY="50%" 
        android:fillAfter="false" 
        android:duration="700" /> 
    <set android:interpolator="@android:anim/decelerate_interpolator"> 
        <scale 
           android:fromXScale="1.4" 
           android:toXScale="0.0" 
           android:fromYScale="0.6" 
           android:toYScale="0.0" 
           android:pivotX="50%" 
           android:pivotY="50%" 
           android:startOffset="700" 
           android:duration="400" 
           android:fillBefore="false" /> 
        <rotate 
           android:fromDegrees="0" 
           android:toDegrees="-45" 
           android:toYScale="0.0" 
           android:pivotX="50%" 
           android:pivotY="50%" 
           android:startOffset="700" 
           android:duration="400" /> 
    </set> 
</set> 

//使い方

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); 
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); 
spaceshipImage.startAnimation(hyperspaceJumpAnimation); 

するための例のJavaコードこの情報がお役に立てば幸いです。それがあなたのために何か変わったら教えてください。

EDIT:私はあなたがゲームだけでなく、簡単なアニメーションを作成する必要がより複雑なソリューションを探しているコメントから理解しています。

私はあなたにこのリソースと将来のプロジェクトについて間違いなく助けてもらいたいと思います。答えを使ってここでゲーム開発のあらゆる面を説明することはできません。

Click here for full detailed android space game tutorial

+0

こんにちは、Nishant。私はこのソリューションがこの場合には役に立たないと思います。私が必要とするのはこれです:左のボタンを押したままにすると、宇宙船は右に移動しなければなりません。ボタンを押さなくても、船は止められます。私はアニメーションを使用することはできません、私は別の位置にImageViewを移動する必要があります。私が最初に左ボタンを押し続けて、宇宙船が30dp移動した後、右ボタンを押し続けて宇宙船を左に移動させたいのであれば、あなたは役に立たない。 –

+0

ねえ、私はあなたの要件を理解しています。私はそれに応じて答えを更新しました。このゲームであなたの現在および将来の問題をすべて解決できることを確かめてください。 **あなただけのアニメーションではありません。それは完全な本格的なゲーム開発だから、答えのすべてのコード例を与えることはできません**。編集したリンクがあなたが探していたチュートリアルであることが分かったら、私の答えを受け入れてください。 –

関連する問題