【cocos2dx 3.3 lua】07 模拟摇杆

实现了一个模拟摇杆--[[虚拟摇杆类 Layer几种组合方式:1.固定位置 不自动隐藏2.固定位置 自动隐藏3.非固定位置 自动隐藏Init 初始化Release 释放SetEnable 启用IsEnable 是否启用--]]local NavigationLayer = class("NavigationLayer",function() ret
摘要由CSDN通过智能技术生成

实现了一个模拟摇杆

--[[
虚拟摇杆类 Layer
几种组合方式:
1.固定位置   不自动隐藏
2.固定位置   自动隐藏
3.非固定位置 自动隐藏
Init 初始化
Release 释放
SetEnable 启用
IsEnable 是否启用
--]]


local NavigationLayer = class("NavigationLayer",function()
    return cc.Layer:create()
end)

-- 8个方向
NavigationLayer.eDirection = {
    None = 0,
    U = 1,
    UR = 2,
    R = 3,
    DR = 4,
    D = 5,
    DL = 6,
    L = 7,
    UL = 8
}

NavigationLayer._instance = nil

NavigationLayer._touchArea = nil
NavigationLayer._touchListener = nil
NavigationLayer._downPos = nil

NavigationLayer._isEnable = false
NavigationLayer._naviCallback = nil

NavigationLayer._rootNode = nil
NavigationLayer._naviBallNode = nil
NavigationLayer._radius = 0

NavigationLayer._naviPosition = nil -- nil时跟随点击位置
NavigationLayer._isAutoHide = true  -- 非点击或移动状态自动隐藏

function NavigationLayer.GetInstance()
    if NavigationLayer._instance == nil then
        NavigationLayer._instance = NavigationLayer.new()
    end

    return NavigationLayer._instance
end

function NavigationLayer.ReleaseInstance()
    if NavigationLayer._instance ~= nil then
        NavigationLayer._instance:Release()
        NavigationLayer._instance = nil
    end
end

function NavigationLayer:ctor()
    
end

--[[参数表
isEnable 是否启用
isAutoHide 是否自动隐藏,如果没有固定位置,则此参数无效,按照自动隐藏处理
naviPosition 摇杆位置,nil则跟随点击位置,否则有固定位置
naviCsbName 摇杆csb路径,其中摇杆球需要在根节点下
ballKey 摇杆球的key,用于查找摇杆球
radius 摇杆半径
touchArea 有效触摸区域,在此区域内点击才会处理摇杆操作
naviCallback 方向更改回调,回传角度与8个反向,参考eDirection,角度以右为0,上为90,下为-90
]]
-- 初始化 naviPosition nil则根据点击位置变化 有值则固定位置
function NavigationLayer:Init(isEnable, isAutoHide, naviPosition, naviCsbName, ballKey, radius, touchArea, naviCallback)
    -- 没有固定位置的 只能是自动隐藏
    if naviPosition == nil then
        isAutoHide = true
    end
    -- 加载ui
    self._rootNode = cc.CSLoader:createNode(naviCsbName)
    if self._rootNode &#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值