我想扩展我的矩形宽度增加1,并希望它在达到屏幕宽度时停止。但是,它在我的代码中停止在屏幕中间增加。请问我能错过什么?
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)
答案 0 :(得分: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)
日冕中的所有视图都有默认的参考点,这意味着如果将它们放置在(0,0,0,100),它们将从左上角开始,高度为100像素。视图的x值(在这种情况下为rect)将位于其“左侧”。
增加此矩形的宽度不会更改矩形的位置。只是把它扩大。因此,宽度增加的一半在屏幕之外,在这种情况下位于左侧。
答案 1 :(得分:2)
您可以通过将rect.x = W / 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)
现在,您可以通过以下代码解决这个问题(为了方便起见,我使用了一个名为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)
保持编码..............:)