C#培训2019-10-22 第六课方块移动的事件修改处理、事件挂载问题、各个类分工问题

问题一、各个类的分工要明确。

首先我是准备让方块一直动这过程在Form中实现,也就是一直触发“MoveObject”的方法来实现持续移动。
我的设计问题:Form控制方块其实只有第一次有效,后面虽然Form一直在命令,但是方向信息用的是它本身存起来的方向信息。设计原因:因为直接修改方向信息的话,会使得第一个方块到底部时候,所有方块都反向了。然后就想了这个方法。
总结:
初始思路没有问题,“持续动作”放在UI和方块中都没有问题。但是遇到问题不能把提出问题的人解决掉,而是想办法解决问题本身。
如果按照我的思路做,UI既然控制了方块,那就一直由UI来控制,不能中间又变成了方块自己控制方向,这样就没有把各自的工作分开来。
解决方案:
在UI中建立每一个方块的方向信息数组,每次命令的时候,送去对应的方向信息,这就每个方块的方向单独改变的只是它自己的方向,和整体无关。(注意,数组是引用类型,要clone()

问题二、事件的挂载有问题。

首先事件定义的前提:谁接收,谁挂载;实际谁触发,就定义在哪。
在这个前提下,Form是触发事件的,因此事件定义在Form中;MoveObject是接收“方向”信息,所以在MoveObject类中挂载。
问题:
这样的话挂载事件的时候,就会出现一个问题:由于事件是在Form中定义的,挂载又是在MoveObject类中,“+=”左边的事件就不知道怎么写了。
我的思路:
在new“MoveObject”的时候,把Form丢进去。丢进去的目的只是为了挂载。
当时写的时候,就感觉有点不对,首先将Form整个丢进去不是很好;其次Form丢进去只是为了实现一件事:“挂载”。
解决方案:
解决方法是:新建一个静态的类来定义和触发事件
详情见前面文章:https://blog.csdn.net/qq_41617697/article/details/102677464

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值