图层遮盖判定算法实现2
学习于bilibili 尚学堂官方
1. 点击时调用置灰
在Brand中
if (brand.getGray()){
//灰色
return;
}else {
brand.getParent().remove(brand);//通过父容器删掉自己 一般树形结构使用此方式
//也需要判断 整个地图所有牌哪些置灰
map.compareAll();
}
此时找不到map对象
故把TestRenderMap中的map对象设为static
public static Map map = MapUtil.build(3);
Brand中
TestRenderMap.map.compareAll();
此时只是在页面ui树中删除了对象,Cell的state和Brand没有删除
故还是无法将灰色变彩色
2. 解决方式
在Brand中定义单元格对象,并提供get和set方法
//定义单元格对象
private Cell cell;
public Cell getCell() {
return cell;
}
public void setCell(Cell cell) {
this.cell = cell;
}
LayerUtil.java
for (int col = 0; col < cells[row].length; col++) {
// System.out.println(row + "-" + col);
Brand brands1 = brands[flag++];
Cell cell = new Cell();
cell.setState(1);
cell.setBrand(brands1);
brands1.setCell(cell);
cells[row][col] = cell;//把之前空的图层设置了值
}
Brand.java
//此时只是在页面ui树中删除了对象,Cell的state和Brand没有删除
brand.getParent().remove(brand);//通过父容器删掉自己 一般树形结构使用此方式
//解决 既要删除UI的图片 也要删除数据模型的数据和对应状态
cell.setState(0);
cell.setBrand(null);
//也需要判断 整个地图所有牌哪些置灰
TestRenderMap.map.compareAll();