给一个node添加监听


一部分的代码:

local eventDispatcher = self:getEventDispatcher()

    local listener = cc.EventListenerTouchOneByOne:create()
    listener:setSwallowTouches(true)


    function onTouchBegan(touch, event)
    return true
    end
    function onTouchMoved(touch, event)
   
    end
    function onTouchEnded(touch, event)
    print("Poker:onTouchEvent ended -----")
    if self.target ~= nil then
self.isSelected = not self.isSelected;
self.target:touchPokerDeal(self);
end
    end


    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
    listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )
    listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )


    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)


下面说一下这个lua里面的单点触摸和多点触摸的区别:

单点触摸:

self:setTouchEnabled(true);

self:setTouchMode(cc.TOUCHES_ONE_BY_ONE)       


多点触摸:

self:setTouchEnabled(true);
self:setTouchMode(cc.TOUCHES_ALL_AT_ONCE);   



下面把这个node文件也发上来:



local Poker = class("Poker", function () return display.newNode(); end)


function Poker:ctor(pokerPath, pokerValue)
self:initData();


self.pokerPath = pokerPath or "";
self.pokerValue = pokerValue or -1;


self:initUI();
end


function Poker:initData()
self.m_originColor = nil;
self.pokerPath = "";
self.pokerValue = -1;
self.pokerNode = nil;
self.target = nil;
self.isSelected = false;


self.index = -1;--牌索引
self.moveDir = -1;--滑动选中方向 0 左滑 1 右滑
self.isChangePosY = -1;
self.pokerOriginPos = nil;--原始位置
self.pokerIsUp = false;--是否弹起


end


function Poker:setTarget(target)
self.target = target;
end


function Poker:initUI()
if self.pokerPath == "" then
print("pokerPath is nil error !")
return;
end


--print("self.pokerPath = "..self.pokerPath.." self.pokerValue "..self.pokerValue)
local sharedSpriteFrameCache = cc.SpriteFrameCache:getInstance();
    local pFrame = sharedSpriteFrameCache:getSpriteFrame(self.pokerPath);
    self.pokerNode = cc.Sprite:createWithSpriteFrame(pFrame);
    -- self.pokerNode:setTouchEnabled(true);
    -- self.pokerNode:addTouchEventListener(function(sender, eventType) self:onTouchEvent(sender, eventType); end)


    self:setContentSize(cc.size(self.pokerNode:getContentSize().width,self.pokerNode:getContentSize().height));


    --self:setTouchEnabled(true);
    --self:setSwallowTouches(true);
    --self:addTouchEventListener(function(sender, eventType) self:onTouchEvent(sender, eventType); end);


    if self.pokerNode then
    -- print("创建了poker "..self.pokerPath)
    self:setContentSize(cc.size(self.pokerNode:getContentSize().width, self.pokerNode:getContentSize().height));
    self.pokerNode:setAnchorPoint(cc.p(0,0));
    self:addChild(self.pokerNode);
    self.m_originColor = self.pokerNode:getColor();


    if self.pokerValue ~= -1 and self:WuShiK() then
    --self:setPokerHighlighted(false);
    local s = cc.Sprite:create("game/poker/xing.png");
    s:setScale(0.5);
    s:setAnchorPoint(0,0);
    self:addChild(s)
    end
    end




  local eventDispatcher = self:getEventDispatcher()
    local listener = cc.EventListenerTouchOneByOne:create()
    listener:setSwallowTouches(true)


    function onTouchBegan(touch, event)
    return true
    end
    function onTouchMoved(touch, event)
   
    end
    function onTouchEnded(touch, event)
    print("Poker:onTouchEvent ended -----")
    if self.target ~= nil then
self.isSelected = not self.isSelected;
self.target:touchPokerDeal(self);
end
    end


    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN )
    listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED )
    listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED )


    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)




end


function Poker:setAutoScale(scale)
self:setScale(scale);
local size = self:getContentSize();
self:setContentSize(cc.size(size.width * scale, size.height * scale));
end


function Poker:setAutoRotate(rotate)
self:setRotation(rotate);
end


function Poker:onTouchEvent(sender, eventType)
if eventType == ccui.TouchEventType.began then
print("Poker:onTouchEvent begin -----")
elseif eventType == ccui.TouchEventType.ended then
print("Poker:onTouchEvent ended -----")
if self.target ~= nil then
self.isSelected = not self.isSelected;
--self.target:touchPokerDeal(self);
end
end
end


function Poker:setPokerValue(value)
self.pokerValue = value;
-- print("self.pokerValue  ===== "..self.pokerValue)


if self:isWuShiK() then
self:setPokerHighlighted(false);
end
end


function Poker:getPokerValue()
return self.pokerValue;
end


function Poker:isWuShiK()
local isFlag = false;


local value = self.pokerValue % 16;


if value == 5 or value == 10 or value == 13 then
isFlag = true;
end
isFlag = false;
return isFlag;
end


function Poker:WuShiK()


if self.pokerValue % 16 == 5 or self.pokerValue % 16 == 10 or self.pokerValue % 16 == 13 then
return true;
else
return false;
end

end


function Poker:setPokerHighlighted(isHighLighted)
if isHighLighted == nil then
isHighLighted = true;
end


if self:isWuShiK() then
isHighLighted = false;
end


if isHighLighted == true then
self:setColorOrgin();
else
self:setPokerGray();
end
end


--灰色
function Poker:setPokerGray()
if self.pokerNode then
self.pokerNode:setColor(FontConfig.colorGray);
else
print("Poker:setPokerGray() error")
end
end


--高亮
function Poker:setColorOrgin()
if self.pokerNode then
self.pokerNode:setColor(self.m_originColor);
end
end


function Poker:getIsSelected()
return self.isSelected;
end


function Poker:setIsSelected(selected)
self.isSelected = selected;
end


function Poker:setIndex(index)
self.index = index;
end


function Poker:getIndex()
return self.index;
end


function Poker:setNewPosX(x)
if x ~= nil then
self:setPositionX(self:getPositionX() + x);
end
end


function Poker:setNewPosY(y)
if y == nil then
return;
end


if self.isChangePosY == 0 and y > 0 then
return;
end


if self.isChangePosY == 1 and y < 0 then
return;
end


self:setPositionY(self:getPositionY() + y);


if y > 0 then
self.isChangePosY = 0;--up
elseif y < 0 then
self.isChangePosY = 1;--down
end
end


--滑动选择 方向保存
function Poker:setMoveDir(dir)
self.moveDir = dir;
end


function Poker:getMoveDir()
return self.moveDir;
end


function Poker:setOriginPos(pos)
self.pokerOriginPos = pos;
end


function Poker:setIsUp(is)
self.pokerIsUp = is;
end


function Poker:getIsUp()
return self.pokerIsUp;
end


return Poker

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值