今天开始准备写个小游戏,找资料,考虑架构 布局 UI。。。
iOS开发一直都是应用开发,没有做过游戏开发,突然想写个小游戏发现好难啊,简直无从下手。第一、对控件的了解不够 第二、对游戏的整体架构不懂。等于今天什么都没弄出来。
要坚持下去吗?小伙伴们给点建议
今天学到的知识点:
1、onclick和onDrag 、ontouch区别,冲突解决方法
2. Imageview随手指拖动同时原视图不见,停止拖动后停留对应位置。
3、复习了粘贴板、拖放、自定义控件。
// 拖动后视图跟随移动
private class ImgOnTouchListenerimplements View.OnTouchListener
{
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public boolean onTouch(View v, MotionEvent event) {
// event.getX 获取X坐标,event.getY获取Y坐标
String sInfo ="X=" + String.valueOf(event.getX()) +" Y=" + String.valueOf(event.getY());
// 提供位置数据"粘贴板"
myClipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
ClipData data = ClipData.newPlainText("point",sInfo);
myClipBoard.setPrimaryClip(data);
// 重绘视图
View.DragShadowBuilder shadowBuilder =new View.DragShadowBuilder(v);
// 开始沿拖拽路径绘制视图副本 这个是异步方法,启动起步线程后很快返回
v.startDragAndDrop(data,shadowBuilder,v,0);
// 使原视图不可见
v.setVisibility(View.INVISIBLE);
return true;
}
}
// 拖动停止后,拖动停止位置展示视图
class MyDragListenerimplements View.OnDragListener
{
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (event.getAction())
{
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_LOCATION:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DRAG_ENDED:
break;
case DragEvent.ACTION_DROP:
// view 实际上就是imageview
View view = (View)event.getLocalState();
// owner 实际上就是父视图
ViewGroup owner = (ViewGroup)view.getParent();
owner.removeView(view);
// v 实际上是GridView
RelativeLayout gridView = (RelativeLayout) v;
gridView.addView(view);
view.setVisibility(View.VISIBLE);
ClipData data =myClipBoard.getPrimaryClip();
ClipData.Item item = data.getItemAt(0);
String point = item.getText().toString();
break;
default:
break;
}
return true;
}
}
网友评论