2013-05-20 1 views
-1

나는 안드로이드에서 기본적인 야구 경기를 만들려고합니다. 배경 이미지는 xml 파일로 설정되어 있으며 홈 플레이트의 기본 볼 이미지를 터치하여 이동하도록 설정하려고합니다. 문제는 내가 야구 이미지를 보여줄 수 없다는 것입니다. 앱 자체에는 5 가지 활동이 있으며 게임은 앱 내부에서 하나의 활동입니다. 나는 안드로이드와 기본적인 게임을 개발하고 있습니다. 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다. ` 당신은 당신의 코드를 원하는 경우표면보기를 사용하여 기본 야구 게임을 만듭니다. 내 야구 이미지를 표시하려고합니다.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.myapp.ron.drinkingbaseball" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.myapp.ron.drinkingbaseball.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.myapp.ron.drinkingbaseball.Stats" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.myapp.ron.drinkingbaseball.STATS" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
      <activity 
      android:name="com.myapp.ron.drinkingbaseball.DrinkingBaseballGame" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.myapp.ron.drinkingbaseball.DRINKINGBASEBALLGAME" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.myapp.ron.drinkingbaseball.MyGameSurface" 
      android:label="@string/app_name" > 
     </activity> 
      <activity 
      android:name="com.myapp.ron.drinkingbaseball.ShowStatistics" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.myapp.ron.drinkingbaseball.SHOWSTATISTICS" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

이 내 주요 게임 자바 코드 여기

public class DrinkingBaseballGame extends Activity implements OnTouchListener{ 

    MyGameSurface mySurface; 
    float x, y, sx, sy, fx, fy, dx, dy, anix, aniy, scaledX, scaledY; 
    Bitmap ball, background; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     mySurface = new MyGameSurface(this); 
     x = 0; 
     y = 0; 
     sx = 0; 
     sy = 0; 
     fx = 0; 
     fy = 0; 
     dx = 0; 
     dy = 0; 
     anix = 0; 
     aniy = 0; 
     scaledX = 0; 
     scaledY = 0; 
     ball = BitmapFactory.decodeResource(getResources(), R.drawable.baseball); 
     background = BitmapFactory.decodeResource(getResources(), R.drawable.baseball_field_background); 
     setContentView(R.layout.drinkingbaseball); 

    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     mySurface.pause(); 
    } 

    @Override`enter code here` 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     mySurface.resume(); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // TODO Auto-generated method stub 

     try { 
      Thread.sleep(50); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     x = event.getX(); 
     y = event.getY(); 

     switch(event.getAction()){ 
     case MotionEvent.ACTION_DOWN: 
      sx = event.getX(); 
      sy = event.getY(); 
      dx = dy = anix = aniy = scaledX = scaledY = fx = fy = 0;  
      break; 

     case MotionEvent.ACTION_UP: 
      fx = event.getX(); 
      fy = event.getY(); 
      dx = fx - sx; 
      dy = fy - sy; 
      scaledX = dx/30; 
      scaledY = dy/30; 
      x = y = 0; 
      break; 
     } 

     return true; 
    } 

    public class MyGameSurface extends SurfaceView implements Runnable{ 

     SurfaceHolder myHolder; 
     Thread myThread = null; 
     boolean isRunning = false; 

     public MyGameSurface(Context context) { 
      super(context); 
      myHolder = getHolder(); 
     } 

     public void pause(){ 
      isRunning = false; 
      while(true){ 
       try{ 
        myThread.join(); 
       }catch(InterruptedException e){ 
        e.printStackTrace(); 
       } 
       break; 
      } 
      myThread = null; 
     } 

     public void resume(){ 
      isRunning = true; 
      myThread = new Thread(this); 
      myThread.start(); 
     } 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      while(isRunning){ 
       if(!myHolder.getSurface().isValid()) 
       continue; 

       Canvas canvas = myHolder.lockCanvas(); 
       canvas.drawBitmap(ball, canvas.getWidth()/2, canvas.getHeight()/4, null); 

       myHolder.unlockCanvasAndPost(canvas); 
      } 
     } 

    } 
} 

입니다 내 표면 코드

public class MyGameSurface extends View{ 

    Bitmap background, ball; 
    float changingY; 

    public MyGameSurface(Context context) { 
     // TODO Auto-generated constructor stub 
     super(context); 
     ball = BitmapFactory.decodeResource(getResources(), R.drawable.baseball); 
     changingY = 0; 
     background = BitmapFactory.decodeResource(getResources(), R.drawable.baseball_field_background); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas);  
     canvas.drawBitmap(ball, canvas.getWidth()/4, changingY, null); 
     if(changingY < canvas.getHeight()){ 
      changingY += 10; 
     }else{ 
      changingY = 0; 
     } 
     invalidate(); 
    } 

} 
` 
+1

그래서 문제가 무엇입니까? 성명서 : "문제는 내가 야구를 보여줄 수 없다는 것이다." 누구든지 당신을 도울 수있는 충분한 정보를 제공하지 않습니다. –

+1

[SSCCE] (http://sscce.org/), please. –

+0

자세한 정보를 제공해야합니다. 이미지를 야구 이미지로 설정 한'ImageView' 만들기를 시도한 다음'ImageView'에서'bringToFront()'를 호출하여'SurfaceView' 위에 (z 축) 있는지 확인해보십시오. 다시 말하지만, 더 정확하게 정보를 제공해야합니다. – chRyNaN

답변

0

인이 내 매니페스트 파일입니다 시작하려면 이 줄을 바꾸는 것만으로도

setContentView(R.layout.drinkingbaseball); 
이 하나

setContentView(mySurface); 

하지만 난 여전히 당신의 개념이 좋지 않아 내 말 뒤에 서.

희망이 있으면 도움이되고 즐기십시오.

+0

내 표면에 콘텐트 뷰를 설정하면 효과가 있었지만 다르게 보였다. 나는 잘 작동 한 달 착륙선 예제를 사용했습니다. 다시 Marko에게 감사드립니다. – rdawg71481

관련 문제