2014-12-26 2 views
0

저는 Corona SDK를 처음 접했고 어떻게 작동하는지 예제 프로젝트를보고 있습니다. 그러나 TAB 예제를보고 있는데 문제가 있습니다.Corona SDK (TabButton 포함)에서 작동하는 기능을 얻을 수 없습니다.

나는 (이 페이지 2입니다) 그래서 같은 페이지가

어쨌든
local composer = require("composer") 
local scene = composer.newScene() 

function scene:create(event) 
    local sceneGroup = self.view 

    -- Called when the scene's view does not exist. 
    -- 
    -- INSERT code here to initialize the scene 
    -- e.g. add display objects to 'sceneGroup', add touch listeners, etc. 

    -- create a white background to fill screen (things go in here like pictures etc) 
    local bg = display.newRect(0, 0, display.contentWidth, display.contentHeight) 
    bg.anchorX = 0 
    bg.anchorY = 0 
    bg:setFillColor(0) -- white 

    -- this will create the thing that you drag (the function is after) 
    local tracker = display.newRect(568, 340, 50, 50) 
    tracker:setFillColor(1) 

    -- all objects must be added to group (e.g. self.view) 
    sceneGroup:insert(bg) 
    sceneGroup:insert(tracker) 
end 

function scene:show(event) 
    local sceneGroup = self.view 
    local phase = event.phase 

    if phase == "will" then 
     -- Called when the scene is still off screen and is about to move on screen 
    elseif phase == "did" then 
     -- Called when the scene is now on screen 
     -- 
     -- INSERT code here to make the scene come alive 
     -- e.g. start timers, begin animation, play audio, etc. 
    end 
end 

function scene:hide(event) 
    local sceneGroup = self.view 
    local phase = event.phase 

    if event.phase == "will" then 
     -- Called when the scene is on screen and is about to move off screen 
     -- 
     -- INSERT code here to pause the scene 
     -- e.g. stop timers, stop animation, unload sounds, etc.) 
    elseif phase == "did" then 
     -- Called when the scene is now off screen 
    end 
end 

function scene:destroy(event) 
    local sceneGroup = self.view 

    -- Called prior to the removal of scene's "view" (sceneGroup) 
    -- 
    -- INSERT code here to cleanup the scene 
    -- e.g. remove display objects, remove touch listeners, save state, etc. 
end 

function tracker:touch(event) 
    if event.phase == "began" then 
     self.markX = self.x --stores x location 
     self.markY = self.y --stores y location 
    elseif event.phase == "moved" then 
     local x = (event.x - event.xStart) + self.markX 
     local y = (event.y - event.yStart) + self.markY 
     self.x, self.y = x, y -- moves the object from things above 
    end 
end 



--------------------------------------------------------------------------------- 

-- Listener setup 
scene:addEventListener("create", scene) 
scene:addEventListener("show", scene) 
scene:addEventListener("hide", scene) 
scene:addEventListener("destroy", scene) 
tracker:addEventListneer("touch", tracker) 
----------------------------------------------------------------------------------------- 

return scene 

것들을 내가 수행 한 변경 사항을 간소화은 다음과 같습니다

local tracker = display.newRect(568, 340, 50, 50) 
tracker:setFillColor(1) 

이 내가 노력하고 새로운 상자를 생성합니다 이렇게하면 화면에서 드래그 할 수 있습니다. (이 함수를 사용했습니다) :

function tracker:touch(event) 
    if event.phase == "began" then 
     self.markX = self.x --stores x location 
     self.markY = self.y --stores y location 
    elseif event.phase == "moved" then 
     local x = (event.x - event.xStart) + self.markX 
     local y = (event.y - event.yStart) + self.markY 
     self.x, self.y = x, y -- moves the object from things above 
    end 
end 

그것은 상자를 생성하고 당신이 화면 주위에 그것을 끌 수 있도록 그것에 기능을 추가하려고합니다. 그러나 그것은 작동하지 않으며 저에게 기능 라인 function tracker:touch(event)의 그 시작에 tracker가 잘못되었음을 말하는 오류가 있습니까? 어떤 도움이라도, 이것은 잘못된 장소에 있다고 생각하기 때문입니다.

피씨 나는 또한 tracker:addEventListneer("touch", tracker) 청취자가 있습니다.

고마워요

답변

0

당신은 당신의 scene:create 함수 내에서 지역 변수로 local tracker를 작성합니다. 즉,이 변수는 해당 함수의 범위 내에서만 사용할 수 있습니다.

트래커를 사용하려면 scene:create 함수 내부에서 tracker:touch(event) 함수를 이동해야합니다.

그리고 수신기를 scene:create 기능의 맨 아래로 이동해야합니다.

+0

아, 감사합니다. 그러나'scene : create' 내부에'tracker : addEventListneer ("touch", tracker)'를 넣었 기 때문에 효과가 없습니다. 그러나 여전히 그것에 대한 오류가 나옵니까? ('scene : create'의 맨 아래에'return true'를 추가했습니다.) –

+0

오류를 연결해야합니다. 모든 오류는 문제의 원인을 설명하고 문제를 말할 수 있습니다. –

0

신경 쓰지 마세요. 나는 그것을 고쳤다. 나는 항상 맞춤법 xD를 검사해야한다 (나는 tracker:addEventListener("touch", tracker)을 잘못 표기했다). 그런 멍청한 실수. 도움을 주셔서 감사합니다.