黑马程序员_事件

“----------ASP.Net+Android+IOS开发、Net培训、期待与您交流!----------”   

  事件是类在发生其关注的事情时用来通知的一种方式,例如:封装用户界面的类可以定义一个在用户单击该控件时发生的事件,控件类不关心单击按钮时发生了什么
     但它需要告知派生类单击事件已经发生.然后,派生类可选择如何响应
     

     事件发行者(Publisher):
     一个事件发行者,也称作发送者(sender),其实就是一个对象,这个对象会自行维护本身的状态信息,当本身状态信息发生变动时,便触发一个事件
     并通知所有事件订阅者
     事件订阅者(Subscriber):
     对事件感兴趣的对象,也称为接收者(Receiver),可以注册感兴趣的事件,通常需提供一个事件处理程序,在事件发行者触发一个事件后,会自动执行这段代码的内容

     事件的四个步骤:
     1.在事件发行者中定义一个事件
     2.在事件发行者中触发事件
     3.在事件订阅者中定义事件处理程序
     4.向事件发行者中订阅一个事件

 class ClassEvent
    {
        static void Main(string[] args)
        {

            Publisher publisher = new Publisher();
            Subscriber zs = new Subscriber("张三");
            publisher.onPubComputer += new Publisher.PubComputer(zs.Receive);//向事件发行者订阅一个事件(委托类型是静态方法,事件是实例方法)
            Subscriber ls = new Subscriber("李四");
            publisher.onPubComputer += new Publisher.PubComputer(ls.Receive);
            publisher.onPubLife += new Publisher.PubLife(ls.Receive);
            
            publisher.IssueComputer();//触发事件
            publisher.IssueLife();

            Console.WriteLine();
            Console.WriteLine("一年后,李四取消了对《电脑》杂志的订阅");
            Console.WriteLine();

            publisher.onPubComputer -= new Publisher.PubComputer(ls.Receive);
            publisher.IssueComputer();//触发事件
            publisher.IssueLife();

            Console.ReadLine();
        }
    }
    //出版社现在出版两本杂志(电脑,生活)
    class Publisher //出版社
    {
        public delegate void PubComputer(string magazineName);  //声明事件所需的代理(个人理解:事件订阅者方法类型(无参无返回值))
        public delegate void PubLife(string magazineName);
        public event PubComputer onPubComputer;  //事件的声明(事件无返回值,若有,就失去了意义(+=))
        public event PubLife onPubLife; 
        public void IssueComputer()
        {  //触发事件的方法
            if (onPubComputer != null)
            {
                Console.WriteLine("出版社发行《电脑》杂志");
                onPubComputer("电脑杂志");
            }
        }
        public void IssueLife()
        {  //触发事件的方法
            if (onPubLife != null)
            {
                Console.WriteLine("出版社发行《生活》杂志");
                onPubLife("生活杂志");
            }
        }
    }

    class Subscriber  //订阅者
    {
        private string name;
        public Subscriber(string name) {
            this.name = name;
        }
        public void Receive(string magazineName)
        {     //在事件订阅者中定义事件处理程序(与发行者中声明的委托类型一致)
            Console.WriteLine(this.name + "已经收到" + magazineName);
        }
    }

 

 

### 关于黑马程序员事件的相关笔记或资料 根据所提供的信息,可以了解到黑马程序员提供了多个方面的教程和资源,其中包括游戏开发以及项目管理等内容。以下是针对“黑马程序员事件”的相关内容整理: #### 游戏开发部分 在游戏开发方面,特别是基于 `pygame` 库制作的飞机大战小游戏,有详细的分步指导[^1]。该游戏的核心逻辑如下所示: ```python def start_game(self): print("游戏开始...") while True: # 1. 刷新频率控制 self.clock.tick(FRAME_PER_SEC) # 2. 事件监听 self.__event_handler() # 3. 碰撞检测 self.__check_collide() # 4. 更新/绘制精灵 self.__updata_sprites() # 5. 屏幕更新 pygame.display.update() ``` 这段代码展示了游戏的主要循环结构,其中包含了帧率控制、事件响应、碰撞检测等功能模块。 --- #### 大事件项目笔记 对于“大事件项目”,其主要涉及的是前端框架 `element-plus` 的应用实例[^2]。具体功能描述如下: 1. **基本架子 - PageContainer 封装** 使用 `PageContainer` 对组件进行了封装,便于统一管理和样式调整。 2. **文章分类渲染 & loading 处理** 实现了动态加载数据的功能,在表格未完全加载前显示加载动画效果。 3. **文章分类添加编辑 [Element Plus 弹层]** 提供了一个弹窗界面用于新增或修改文章分类,支持表单验证和提交操作。 4. **文章分类删除** 用户可以通过点击按钮触发删除动作,并确认后执行实际的数据移除过程。 这些功能共同构成了一个完整的 CRUD(增删改查)系统,适用于后台管理系统中的文章分类管理场景。 --- ### 总结 通过上述分析可以看出,“黑马程序员”不仅涵盖了基础的游戏编程教学,还深入到了现代化 Web 开发领域内的实践案例分享。无论是初学者还是有一定经验的技术人员都可以从中受益匪浅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值