我有一个呈现角色的小组。它包含头部,手臂和身体的其他部位。 我想将触摸听众设置为该组,所以当我触摸头部时,手臂和身体会做一些动作。 我不想将触摸监听器设置为只有头部,而是整个组。 我把名字设置为头,希望event.other可以工作(比如碰撞),但事实并非如此。
你有解决方案吗? 我的代码在下面
local touchListener= function( event )
if (event.phase=="began") then
local group = event.target
local head= group[1]
local arms= group[2]
local body= group[3]
if( event.other.name == "head" ) then
// do something here
end
end
return true
end
答案 0 :(得分:0)
你应该首先创建身体的特定部位。然后你应该为每个人添加触摸监听器。例如,您有名为“head”,“arms”和“body”的对象
head.id = "head"
arms.id = "arms"
body.id = "body"
head:addEventListener( "touch", touchHandler )
arms:addEventListener( "touch", touchHandler )
body:addEventListener( "touch", touchHandler )
-- Touch function here
local function touchHandler( event )
if event.phase == "began" then
display.getCurrentStage():setFocus( event.target )
event.target.isFocus = true
elseif event.target.isFocus then
if event.phase == "moved" and not ( inBounds( event ) ) then
display.getCurrentStage():setFocus( nil )
event.target.isFocus = false
elseif event.phase == "ended" then
if event.id == "head" then
-- Do stuff for head
elseif event.id == "arms" then
-- Do stuff for arms
elseif event.id == "body" then
-- Do stuff for body
end
display.getCurrentStage():setFocus( nil )
event.target.isFocus = false
end
end
return true
end
function inBounds( event )
local bounds = event.target.contentBounds
if event.x > bounds.xMin and event.x < bounds.xMax and event.y > bounds.yMin and event.y < bounds.yMax then
return true
else
return false
end
end
此代码还将查找对象的边界。例如,如果用户触摸屏幕然后将他/她的手指移动到对象外部,则对象将不再被聚焦。 干杯^^