我添加了一个名为“grass”的滚动底部,grass1.png和grass2.png的宽度相同:500px。草2在草地后面,作为阴影。
问题在于草1和草之间的“同步时间”。 grass1_duo(与grass2& grass2_duo相同)。此外,草从屏幕的右侧开始。我想从BottomLeft开始(我使用的是最新版本的LUA)。
请您查看我的代码,我无法理解问题是关于我的功能还是关于“宽度计算”或者两者兼而有之?
grass1 = display.newImage('grass1.png')
grass1.anchorX=0
grass1.height=90
grass1.x=0
grass1.y = display.contentHeight-(grass1.height/2)
physics.addBody(grass1, "static", {density=.1, bounce=0.1, friction=.2})
grass1.speed = 6
screenGroup:insert(grass1)
grass1_duo = display.newImage('grass1.png')
grass1_duo.anchorX=0
grass1_duo.height=90
grass1_duo.x=500
grass1_duo.y = display.contentHeight-(grass1_duo.height/2)
physics.addBody(grass1_duo, "static", {density=.1, bounce=0.1, friction=.2})
grass1_duo.speed = 6
screenGroup:insert(grass1_duo)
grass2 = display.newImage('grass2.png')
grass2.anchorX=0
grass2.height=90
grass2.x=0
grass2.y = display.contentHeight-(grass2.height/1.8)
physics.addBody(grass2, "static", {density=.1, bounce=0.1, friction=.2})
grass2.speed = 6
screenGroup:insert(grass2)
grass2_duo = display.newImage('grass2.png')
grass2_duo.anchorX=0
grass2_duo.height=90
grass2_duo.x=500
grass2_duo.y = display.contentHeight-(grass2_duo.height/1.8)
physics.addBody(grass2_duo, "static", {density=.1, bounce=0.1, friction=.2})
grass2_duo.speed = 6
screenGroup:insert(grass2_duo)
这是一个名为:
的函数function ScrollGrass(self,event)
if self.x < (-1000 + (self.speed*3)) then
self.x = 1000
else
self.x = self.x - self.speed
end
端
现在,我的听众:
grass1.enterFrame=ScrollGrass
Runtime:addEventListener("enterFrame",grass1)
grass2.enterFrame=ScrollGrass
Runtime:addEventListener("enterFrame",grass2)
grass1_duo.enterFrame=ScrollGrass
Runtime:addEventListener("enterFrame",grass1_duo)
grass2_duo.enterFrame=ScrollGrass
Runtime:addEventListener("enterFrame",grass2_duo)
谢谢:)
答案 0 :(得分:0)
尝试为所有草使用一个功能:
function scrollGrass(grass)
if grass.x < (-1000 + (grass.speed*3)) then
grass.x = 1000
else
grass.x = grass.x - grass.speed
end
end
function scrollGrasses(event)
scrollGrass(grass1)
scrollGrass(grass1_duo)
scrollGrass(grass2)
scrollGrass(grass2_duo)
end
Runtime:addEventListener("enterFrame",scrollGrasses)
如果这没有帮助,那么你的滚动功能可能是错误的,但是你无法从帖子中判断出你想要该功能做什么。
更新:
您应该尝试的第一件事是不注册enterFrame事件,因此您可以在初始化时看到草。这些职位是否正确?
您可以做的另一件事是在群组上使用转化,然后您不再需要enterFrame:
allGrasses = display.newGroup()
allGrasses:insert(grass1)
...
allGrasses:insert(grass2_duo)
function resetGrassesPos()
allGrasses.x = 0
transition.to(allGrasses, {time=5000, x=-500, onComplete=resetGrassesPos}
end
transition.to(allGrasses, {time=5000, x=-500, onComplete=resetGrassesPos}
你可以为每一棵草进行过渡,但我不知道它是否会让它们保持同步。
答案 1 :(得分:0)
我认为我的功能有问题。我已尝试过您的功能,但我不确定这是否可以解决我的问题。我想在视频中执行以下操作:https://www.youtube.com/watch?v=FsP7mJkyIiQ
与转型合作对我来说不会对我有好处,因为我必须使用不同的智能手机解决方案管理#34;
到目前为止,没有滚动功能,我可以在屏幕上显示所有草。 3根草:3 x 500px。我现在正在寻找的是在没有任何中断的情况下滚动3匹草。
我认为这个功能可以起作用,但它没有:
function scrollGrass(grass, event)
if grass.x < -1500 then --1500 is the size of the 3 grasses each one is close to the other. In fact, i'm not sure that the number is correct.
grass.x = 1500
else
grass.x = grass.x - 6
end
end
谢谢:)