2016-09-30 3 views
1

내 widget.newScrollView 구성 요소 뒤에 배경 이미지가 있습니다. 내 newScrollView의 절반 속도로 배경 이미지를 이동하고 싶습니다. 내 스크롤보기를 드래그하는 동안이 작동하지만 마우스를 놓으면 스크롤보기가 계속 슬라이딩되지만 배경이 움직이지 않습니다. 슬라이딩 이벤트를 함정에 빠뜨리는 법을 보여주십시오. 많은 감사 여기 Lua 코로나 - 슬라이딩하는 동안 widget.newScrollView 리스너를 청취하는 방법

내 코드의 일부입니다

:

local function scrollListener(event) 
    local phase = event.phase 
    if (phase == "began") then print("Scroll view was touched") 
    elseif (phase == "moved") then print("Scroll view was moved") 
     nebulaeBgnd.x = event.x/2; 
    elseif (phase == "ended") then print("Scroll view was released") 
    end 
end 

local a1 = display.newImage("planetHexs/001.png", _topLeft_x, _topLeft_y); 

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

scrollView:insert(a1) 

답변

0

당신은 런타임 enterFrame 리스너를 통해이 작업을 수행 할 수 있습니다. 우리는 때때로 게임에서이 작업을 수행하며 훌륭하게 작동합니다. 예를 들어 :

Runtime:addEventListener("enterFrame", function() 
    local scrollX, scrollY = scrollView:getContentPosition() 
    nebulaeBgnd.x = scrollX * 0.5 -- Tip: multiplication is faster than division 
end) 

이 지속적으로 접촉 여부중인 관계없이의 요 당신의있는 ScrollView 위치를 수신합니다. 스크롤 뷰 위치 설정에 따라 화면 너비의 절반을 더하거나 뺄 때 x를 보정해야 할 수도 있습니다. getContentPosition here에 관해 읽을 수 있습니다.

런타임 이벤트 리스너에 정말 중요한 참고 : 당신이 그들을 사용을 마친

런타임 이벤트 리스너가, 다른 한편으로는, 제거해야합니다. 그렇지 않으면 Runtime 이벤트가 글로벌이기 때문에 계속 실행됩니다. 이로 인해 메모리 누수가 발생할뿐만 아니라 런타임에 실행중인 함수가 더 이상 존재하지 않는 객체를 참조하려고하면 프로그램이 중단됩니다. 자세한 정보는 아래 이벤트 리스너 제거를 참조하십시오.

Here is the documentation about removing event listeners.

+0

감사 Basilio, 그거 대단한데 –

+0

당신은 천하무적입니다! –

관련 문제