2013-06-15 1 views
0

너비가 1 씩 증가함에 따라 rect가 확장되고 화면 너비에 도달하면 멈추고 싶습니다. 그러나, 그것은 내 코드에서 화면 중간에 증가를 멈 춥니 다. 내가 잃어버린 것을 제게 말해 줄 수 있니?EnterFrame 이벤트가 코로나에서 일찍 중지됩니다.

W=display.contentWidth 
H=display.contentHeight 

local rect = display.newRect(0,0,0,100) 
rect:setFillColor(0,255,0) 

local function expand() 
    rect.width= rect.width+1 
    print(rect.width) 
    if rect.width==W then 
    Runtime: removeEventListener("enterFrame", expand) 
    end 
end 

Runtime: addEventListener("enterFrame", expand) 

답변

3

테스트되지 않았지만 제대로 작동합니다. 코로나에서

W=display.contentWidth 
    H=display.contentHeight 

    local rect = display.newRect(0,0,0,100) 
    rect:setFillColor(0,255,0) 

    local function expand() 
     rect.width= rect.width+1 
     rect.x=0 
     print(rect.width) 
     if rect.width==W then 
      Runtime :removeEventListener("enterFrame", expand) 
     end 
     end 

    Runtime: addEventListener("enterFrame", expand) 

모든 전망은 100pixels의 높이 왼쪽 상단에서 시작됩니다 당신이 (0,0,0,100)에 그들을 배치하는 경우 즉, 기본값으로 기준점을 좌상있다. 뷰의 x 값 (이 경우 rect)은 왼쪽에 있습니다.

이 사각형의 너비를 늘리더라도 사각형의 위치는 변경되지 않습니다. 그냥 넓게 만드세요. 따라서 폭의 증가분의 절반은 화면을 넘어서이 경우 왼쪽으로 나타납니다.

는 같은 코드의 구걸에 rect.x = W/2를 넣어 코드에서 무슨 일이 일어나고 있는지 알 수
+0

이제는 완전히 의미가 있습니다. enlightment 주셔서 감사합니다. =) –

2

: 이제

W=display.contentWidth 
H=display.contentHeight 

local rect = display.newRect(0,0,0,100) 
rect:setFillColor(0,255,0) 
rect.x = W/2   -- just put this in your code and see what actually happening 

local function expand() 
    rect.width= rect.width+1 
    print(rect.width) 
    if rect.width==W then 
     Runtime :removeEventListener("enterFrame", expand) 
    end 
end 
Runtime: addEventListener("enterFrame", expand) 

, 다음으로이 문제를 해결할 수 코드 (: 코드에서 RECT의 크기와 위치에 대한 관계를 이해하기위한, 당신의 편의를 위해 incrementVal 나는라는 변수를 사용했다) :

W=display.contentWidth 
H=display.contentHeight 

local rect = display.newRect(0,0,0,100) 
rect:setFillColor(0,255,0) 

local incrementVal = 1 
local function expand() 
    rect.width= rect.width+incrementVal 
    rect.x = rect.x + (incrementVal/2) -- additional line, added for proper working 
    if rect.width==W then 
    Runtime :removeEventListener("enterFrame", expand) 
    end 
end 
Runtime: addEventListener("enterFrame", expand) 

코딩 계속 ............ .. :)

관련 문제