摇杆移动应用消息中心的简易实现

摇杆的实现原理 摇杆的组成是两个圆形 底图为大圆 大圆的半径是小圆的按压范围 以圆心为中心 模长为1 可看做坐标系 分为4个象限 根据按压点返回的Vector2值判断目标点在哪个象限 摇杆多用于手游 无法像键盘或鼠标输入具体位置 那么返回的Vector2值就用按压的力度*具体的模长来计算 目前完成了用户的输入 也就是得到了具体的偏移量 可以驱动所写的数据逻辑执行 经过逻辑的分发之后找到最后的执行逻辑 完成到目标点的移动 具体的执行逻辑可以应用消息中心 定义移动的枚举类型 首先添加事件 再写触发事件的条件 定为按压一次就发送一次消息 消息中心收到消息后完成对事件的派发 在具体执行逻辑中再根据枚举类型判断事件 完成对事件的触发

下面附上消息中心代码

public class EventManager:Singleton<EventManager>
{
    private static Dictionary<MyType, DelegateEvent> dic = new Dictionary<MyType, DelegateEvent>();

public void addEvent(MyType types,DelegateEvent.MyDel func)
    {
        DelegateEvent delegateEvent;
        if (!dic.TryGetValue(types,out delegateEvent))
        {
            delegateEvent = new DelegateEvent();
            dic[types] = delegateEvent;
        }
        else
        {
            delegateEvent = dic[types];
        }
        delegateEvent.addListener(func);
    }
    public void SendEvent(MyType types,object obj)
    {
        if (!dic.ContainsKey(types))
        {
            return;
        }

EventDate eventDate = new EventDate();
        eventDate.data = obj;
        eventDate.types = types;

dic[types].Handle(eventDate);
    }
}
public enum MyType
{
    SERVERITEM,BAGITEM,MOVEMENT
}
public class DelegateEvent
{
    public delegate void MyDel(EventDate eventDate);
    public event MyDel mydel;
    public void addListener(MyDel myDel)
    {
        mydel += myDel;
    }
    public void removeListener(MyDel myDel)
    {
        mydel -= myDel;
    }
    public void Handle(EventDate date)
    {
        if (mydel != null)
            mydel(date);
    }
}
public class EventDate
{
    public MyType types;
    public object data;
}

原文地址:https://www.cnblogs.com/PJ-Mr-Zhang/p/11379508.html

时间: 2024-07-29 09:32:00

摇杆移动应用消息中心的简易实现的相关文章

一个简单消息中心,实现回调的扁平化

function Msg(name, data) {         this.name = name;// 消息标识名称,不同的消息应该不同的名称         this.data = data;// 消息携带的数据,格式不限制     }     function Listener(keys, callback) {         if (typeof keys === "string") {             this.keys = keys.split('-');  

消息中心构架设计说明书

紫薇真人李万鸿 目录 1       1. 文档介绍.... 4 1.1       文档目的... 4 1.2       文档范围... 4 1.3       读者对象... 4 1.4       参考文献... 4 1.5       术语与缩写解释... 4 2       系统概述.... 5 3       设计约束.... 6 4       设计策略.... 7 5       系统总体结构.... 8 6       子系统N的结构与功能.... 9 7       开发环

消息中心

- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"第一页"; self.view.backgroundColor = [UIColor cyanColor]; [self createBtn]; second = [[SecondViewController alloc]init]; //添加消息的接收者--- 为消息中心添加观察者 //消息对整个工程都是可见 在整个工程的任意函数中都能接收

iOS设计模式之NSNotificationCenter 消息中心

消息中心模式和KVO模式有点相似,区别在于,KVO  模式是意图在于监听摸一个对应的值的变化,而去出发一个方法相应的动作,而消息中心在于,广播,它就像一个广播基站,发送一条消息,在所有的添加监听的地方都能够收到此信息,并作出不同活着相同的动作,范围更广大,功能更强大 //添加消息中心监听(添加观察者,也能说成添加监听) [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myNotification:)

用代码打开通知中心(statusbar、通知栏、消息中心)

我想用代码来打开android的消息中心,也叫做statusbar.通知栏.通知栏其实就是一个常驻的服务,至于原理这里就不多说了,简单说下思路和问题. 思路:API中没有实现的方法,那么就利用反射机制 问题:4.2系统中的方法变更 解决办法:分系统实现不同的方法 源码路径:……\sdk\sources\android-18\android\app\StatusBarManager 我们先来看android 4.4(API 19)中的方法,android 4.3(API 18),android 4

nodejs中使用RabbitMq消息中心系统的方式

方式一:通过npm安装amqp库 方式二:通过rabbit.js库http://www.squaremobius.net/rabbit.js/ AMQP:高级消息队列协议,是应用层协议的一个开放标准,RabbitMq是用Erlang语言编写的一个AMQP的开源实现. 核心组件:Exchange & Queue Exchange称为交换器,Queue是消息队列,这两者都在服务器端,Producer和Consumer分别是生产者和消费者,在客户端 原理: 生产者发送消息给交换器Exchange并带一

Node.js + Nginx搭建基于websocket的、可扩展的消息中心

前言:最近需要搭个可扩展的聊天室环境,倒腾了半天,整理出了这么个方案.这个方案满足下列需求: ⑴ 基于websocket通讯. ⑵ node.js server作为deamon进程在后台一直运行. ⑶ socket server可通过增加服务器的形式横向扩展. 小编本人搞技术的,做事力求直击要害,言简意赅,所以把主要的步骤说明了下.需要详细了解的请看文章底部的"参考". 1. 安装nodejs ⑴ 准备工作 yum -y install gcc make gcc-c++ openssl

Windows消息队列

一 Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个"消息队列",即应用程序队列,用来存放该程序可能 创建的各种窗口的消息.应用程序中含有一段称作"消息循环"的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中.  二 Windows为当前执行的每个Windows程序维护一个「消息队列」.在发生输入事件之后,Windows将事件转换为一个「消息」并将消息放入程序的消息队列中.程序通过执行一块称之为「消息循

消息框架的一种实现

自从在Android中用上了消息框架,屡试不爽.不管是主线程发任务到后台线程,还是后台线程返回结果到主线程,甚至是完全在主线程中的调用,都用发消息-监听消息-收消息这种方式处理,真是解耦利器. 之前写过的两篇文章:用消息机制获取网络数据 和 用消息机制解耦Activity跳转. 之前在工程中都用的是开源的EventBus,很好用,但是因为是定制好的,缺少很多灵活性,监听方法不可改名,不可从父类override,不可以通过泛型参数声明,等等. 自己尝试用Handler实现了一个消息框架,还没完全搞