2016-10-01 8 views
1

나는 앞에 widget.newScrollView 구성 요소와 widget.newButton을 가지고 있습니다. 불행히도 내 단추를 클릭하면 내 ScrollView "탭"처리기를 호출합니다. 내 ScrollView에서이 이벤트를 가져 오지 못하게하려면 어떻게해야합니까? 내가 display.NewImages의 배열 (행성) 내 처리기있어lua 코로나 - 터치 이벤트를 비활성화하는 방법

local button1 = widget.newButton(
{ 
    label = "button", 
    onEvent = handleButtonEvent, 
    emboss = false, 
    shape = "roundedRect", 
    width = 400, 
    height = 100, 
    cornerRadius = 32, 
    fillColor = { default={1,0,0,1}, over={1,0.1,0.7,1} }, 
    strokeColor = { default={1,0.4,0,1}, over={0.8,0.8,1,1} }, 
    strokeWidth = 4, 
    fontSize=100; 
} 

을 추가

local function handleButtonEvent(event) 
    if ("ended" == event.phase) then 
     print("Button was pressed and released") 
    end 
    return true; **I tried this - but it had no effect** 
end 

-이 같은 : 는 여기에 내가 사용하고 코드의 일부이다

,689 :
local planets = {}; 
planets[1] = display.newImage("planetHexs/001.png", _topLeft_x, _topLeft_y); 
planets[2] = display.newImage("planetHexs/002.png", _topLeft_x, _topLeft_y + _planet_height2); 
.... 

local scrollView = widget.newScrollView(
{ 
    top = 0, 
    left = 0, 
    width = display.actualContentWidth, 
    height = display.actualContentHeight, 
    scrollWidth = 0, 
    scrollHeight = 0, 
    backgroundColor = { 0, 0, 0, 0.5}, 
    verticalScrollDisabled=true; 
} 

for i = 1, #planets do 
    local k = planets[i]; 
    scrollView:insert(k) 
end 

function PlanetTapped(num) 
    print("You touched the object!"..num); 
end 

for i = 1, #planets do 
    local k = planets[i]; 
    k:addEventListener("tap", function() PlanetTapped(i) end) 
end 

나는이 인쇄 로그를 얻을 수

+0

[Corona SDK에서 이벤트 중지 전파] 가능한 중복 (0120) 페이지 : – Piglet

+0

새 질문을 올리려면 google befor를 사용하십시오. 이벤트 전파를 중지하려면 이벤트를 처리 할 마지막 이벤트 핸들러가 true를 리턴해야합니다. ... – Piglet

+0

많은 thanks Piglet :) 나는 그것을 시도했지만 작동하지 않았다. ( 도움이 될만한 코드를 더 추가했다 :) 제발 도와주세요. 조금 더 :) –

답변

0

전파를 방지하려면 이벤트 기능에 true을 리턴해야합니다. 이것은 본질적으로 코로나에게 이벤트가 올바르게 처리되었고 해당 이벤트에 대한 이벤트 리스너가 더 이상 발생하지 않아야 함을 알려줍니다. You can read more about event propagation here in the docs.

"tap""touch" 이벤트는 다른 청취자와 함께 처리됩니다, 그래서 당신은 당신이 버튼을 터치하면 탭을 정지하고자하는 경우, 당신은 본질적으로 방지하기 위해 true을 반환,뿐만 아니라 당신의 버튼에 "tap" 리스너를 추가, 또는 차단합니다 이벤트를 그 뒤에있는 모든 것에 탭하십시오. 버튼을 탭 이벤트를 가지고 있지 않기 때문에

button1:addEventListener("tap", function() return true end) 

, 탭 이벤트는 단순히 "tap" 이벤트를 할 그 뒤에 어떤 객체에, 버튼을 통해 이동합니다.

+0

감사합니다 바실리오! 그 코드는 잘 작동했습니다 :) –