一部分的代码:
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