2013-07-11 16 views
1

我正在試圖製作一個Android益智遊戲出來的圖片。 我到現在爲止所做的是: -i've削減了我從EditText字段獲得的部分圖片; -i've把剪切後的圖片放在gridview中,並得到一個拼圖表; - 我也使用了Collection.suffle(列表)來填充gridview中的圖像;Android滑動Puzzzle遊戲:幻燈片效果

現在,我試圖在gridview中實現兩個圖像的滑動效果。所以我想實現的是一個類似於CandyCrush應用程序或此http://www.youtube.com/watch?v=qUoP87fNB8w的滑動效果。我的意思是,我想保留一張圖片並將其拖到最頂端,以便它能夠滑動到頂部。如果我點擊的圖片和幻燈片底部,它應該與它下面等畫面改變...

這裏是我的代碼:

 Reset = (Button) findViewById(R.id.BReset); 
    SplitNo = (EditText) findViewById(R.id.edSplitBy); 
    SplitBy = Integer.parseInt(SplitNo.getText().toString()); 
    ImgNo = SplitBy * SplitBy; 
    puzzle = (GridView) findViewById(R.id.puzzle); 
    rootImg = (ImageView) findViewById(R.id.source_image); 
    splitImage(rootImg); 
    formPuzzle(smallimages); 
    Reset.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      Reset.setText("Reset"); 
      SplitNo.getEditableText().toString(); 
      SplitBy = Integer.parseInt(SplitNo.getText().toString()); 
      ImgNo = SplitBy * SplitBy; 
      Collections.shuffle(smallimages); 
      formPuzzle(smallimages); 
     } 

    }); 

這裏是我是如何形成的謎題:

private void formPuzzle(ArrayList<PuzzleItem> smallimages) { 

    SMI = new SmallImageAdapter(this, smallimages); 
    puzzle.setAdapter(SMI); 
    puzzle.setNumColumns(SplitBy); 
    puzzle.setHorizontalSpacing(0); 
    puzzle.setVerticalSpacing(0); } 

PuzzleItem.class:

public class PuzzleItem { 
Bitmap puzzlepartImage; 
int correctPosition; 

public PuzzleItem(Bitmap d, int index) { 
    puzzlepartImage = d; 
    correctPosition = index; 
} 

我用這個班只是記住件的位置,我可以檢查是否拼圖完成...

所以我只是在如何實現由draging從gridview的項目滑動運動感興趣...

謝謝:)

編輯:我應該使用OnTouchListener嗎?

回答

1

好吧,我已經設法通過自己找到解決方案:

private void formPuzzle(final ArrayList<PuzzleItem> smallimages) { 

    SMI = new SmallImageAdapter(this, smallimages); 
    puzzle.setAdapter(SMI); 
    puzzle.setNumColumns(SplitBy); 
    puzzle.setHorizontalSpacing(0); 
    puzzle.setVerticalSpacing(0); 

    puzzle.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: { 
       startX = event.getX(); 
       startY = event.getY(); 
       smallimage_Position = puzzle.pointToPosition((int) startX, 
         (int) startY); 
       return true; 
      } 
      case MotionEvent.ACTION_MOVE: { 
       endX = event.getX(); 
       endY = event.getY(); 
       Log.d("X", "..." +endX); 
       Log.d("Y", "..." +endY); 
       if(endX > startX + smallimage_Width/2 && (endY < startY - smallimage_Height/2 || endY < startY + smallimage_Height/2)){ 
        PuzzleItem p1 = SMI.smallimages.get(smallimage_Position); 
        PuzzleItem p2 = SMI.smallimages.get(smallimage_Position +1); 
        SMI.smallimages.set(smallimage_Position, p2); 
        SMI.smallimages.set(smallimage_Position +1, p1); 
        SMI.notifyDataSetChanged(); 
        startX = endX*200; 
        startY = endY*200; 


       } 
       return true; 
      } 
      } 
      return true; 
     } 
    }); 

的滑片受MotionEvent.Action_MOVE並通過計算,你可以在什麼方向找出像素給出的手指移動。 ..例如..如果在從我的ACTION_MOVE情況下識別向右滑動,...

我希望這將幫助一些你們的......

1

另一種方式去實現幻燈片一個滑塊益智遊戲就是使用一個遊戲引擎。我建議Cocos2D for Android,和theres在這裏詳細的教程...

http://denvycom.com/blog/step-by-step-guide-on-how-to-build-your-first-slider-puzzle-game-in-cocos2d-for-android-part-1/

+0

鏈接含有病毒 – Rasel

+0

對此深感抱歉@Rasel。在我的最後,看起來鏈接加載正常。你能否更好地解釋你遇到的病毒的性質?謝謝。 (我也用一對URL掃描儀來快速檢查鏈接,例如http://www.urlvoid.com/) –

+0

昨天我試圖打開這兩個鏈接,然後我的avast防病毒攔截它,並說trozan阻止 – Rasel