第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

為什么空指針?

//分別獲取空方塊的位置與點擊方塊的位置,通過x,y兩邊都差1的方式

GameData mNullGameData = (GameData) iv_null_ImageView.getTag();這里空指針?

GameData mGameData = (GameData) mImageView.getTag();




package com.example.puzzlegame;


import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.GridLayout;

import android.widget.ImageView;

import android.widget.Toast;



public class MainActivity extends Activity {


/**利用二維數(shù)組創(chuàng)建若干游戲小方塊*/

private ImageView[][] iv_game_arr = new ImageView[4][4];

/** 游戲主界面 ?*/

private GridLayout gl_main_game;

//當(dāng)前空方塊的實例的保存

private ImageView iv_null_ImageView;

@Override

? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_main);

? ? ? ??

? ? ? ? //初始化游戲的若干個小方塊

? ? ? ? Bitmap bigBm = ((BitmapDrawable)getResources().getDrawable(R.drawable.g4)).getBitmap();//獲取一張大圖

? ? ? ? int tuWandH = bigBm.getWidth()/4;//每個游戲小方塊的寬和高

? ? ? ??

? ? ? ? for (int i = 0; i < iv_game_arr.length; i++) {

for (int j = 0; j < iv_game_arr[0].length; j++) {

Bitmap bm = Bitmap.createBitmap(bigBm, j * tuWandH, i * tuWandH, tuWandH, tuWandH);//根據(jù)行和列來切成若干個游戲小圖片

iv_game_arr[i][j] = new ImageView(this);

//設(shè)置每一個游戲小方塊的圖案

iv_game_arr[i][j].setImageBitmap(bm);

//設(shè)置方塊之間的間距

iv_game_arr[i][j].setPadding(1, 1, 1, 1);

iv_game_arr[i][j].setTag(new GameData(i, j, bm));//綁定自定義的數(shù)據(jù)

iv_game_arr[i][j].setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

boolean flag = isHasByNullImageView((ImageView) v);

Toast.makeText(MainActivity.this, "位置是否存在:"+flag, Toast.LENGTH_SHORT).show();

}

});

}

}

? ? ? ??

? ? ? ? //初始化游戲主界面,并添加若干個小方塊

? ? ? ? gl_main_game = (GridLayout) findViewById(R.id.gl_main_game);

? ? ? ? for (int i = 0; i < iv_game_arr.length; i++) {

for (int j = 0; j < iv_game_arr[0].length; j++) {

gl_main_game.addView(iv_game_arr[i][j]);

}

}

? ? ? ? //設(shè)置最后一個方塊為空的

? ? ? ? setNullImageView(iv_game_arr[3][3]);

? ? }


//設(shè)置某個方塊為空方塊

public void setNullImageView(ImageView mImageView){

mImageView.setImageBitmap(null);

}

//判斷當(dāng)前點擊的方塊,是否與空方塊的位置關(guān)系是相鄰關(guān)系s

public boolean isHasByNullImageView(ImageView mImageView){

//分別獲取空方塊的位置與點擊方塊的位置,通過x,y兩邊都差1的方式

GameData mNullGameData = (GameData) iv_null_ImageView.getTag();

GameData mGameData = (GameData) mImageView.getTag();

if (mNullGameData.y==mGameData.y && mGameData.x+1==mNullGameData.x) { //當(dāng)前點擊的方塊在空方塊的上邊

return true;

}else if(mNullGameData.y==mGameData.y && mGameData.x-1==mNullGameData.x){//當(dāng)前點擊的方塊在空方塊的下邊

return true;

}else if(mNullGameData.y==mGameData.y+1 && mGameData.x==mNullGameData.x){//當(dāng)前點擊的方塊在空方塊的左邊

return true;


}else if(mNullGameData.y==mGameData.y-1 && mGameData.x==mNullGameData.x){//當(dāng)前點擊的方塊在空方塊的右邊

return true;


}

return false;

}

//每個游戲小方塊上要綁定的數(shù)據(jù)

class GameData{

//每個小方塊的實際位置

public int x = 0;

//每個小方塊的實際位置

public int y = 0;

//每個小方塊的圖片

public Bitmap bm;

//每個小方塊的圖片的位置

public int p_x = 0;

//每個小方塊的圖片的位置

public int p_y = 0;

public GameData(int x, int y, Bitmap bm){

this.x = x;

this.y = y;

this.bm = bm;

this.p_x = x;

this.p_y = y;

}

}

}


正在回答

1 回答

在setNullImageView中加一句話 ?iv_null_ImageView = mImageView ;

//設(shè)置某個方塊為空方塊
public?void?setNullImageView(ImageView?mImageView){
????mImageView.setImageBitmap(null);
????iv_null_ImageView?=?mImageView?;//設(shè)置當(dāng)前為空的小方塊地址放到全局iv_null_ImageView
}


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

Jack_Xiao3185596 提問者

非常感謝!謝謝老師!?。?/div>
2016-08-03 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

為什么空指針?

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號