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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41617697/article/details/102695010

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

首先我是准备让方块一直动这过程在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

猜你喜欢

转载自blog.csdn.net/qq_41617697/article/details/102695010
今日推荐