Так что, создавая мобильную игру с помощью Corona SDK, я недавно столкнулся с проблемой, которую я не мог решить, что является позиционным различием при появлении экранных объектов в петля. Я получил некоторую помощь и выяснил, что это должно быть связано с независимой от частоты кадров анимацией. Но теперь im сталкивается с этим:Lua/Corona SDK/Loop Нерест/Позиционная разность/Независимая от кадра независимость
Хотя я использую независимую от частоты кадров анимацию здесь, это также создает ту же проблему. Это подчеркивается увеличением скорости цикла, как в приведенном ниже коде. Что вы думаете об этом?
local loopSpeed = 306
local loopTimerSpeed = 1000
local gapTable = {}
local gapLoopTimer
local frameTime
local gap
--enterFrame for time only
local function frameTime(event)
frameTime = system.getTimer()
end
--enterFrame
local function enterFrame(self, event)
local deltaTime = frameTime - self.time
print(deltaTime/1000)
self.time = frameTime
local speed = self.rate * deltaTime/1000
self:translate(speed, 0)
end
--loop speed function
local function setLoopSpeed(factor)
loopSpeed = loopSpeed * factor
loopTimerSpeed = loopTimerSpeed/factor
end
--set the loop speed
setLoopSpeed(3)
--loop to create gaps
local function createGap()
gap = display.newRect(1, 1, 308, 442)
gap.time = system.getTimer()
gap.anchorX = 1
gap.anchorY = 0
--animation
gap.rate = loopSpeed
gap.enterFrame = enterFrame
Runtime:addEventListener("enterFrame", gap)
--fill table for cleaning up
table.insert(gapTable, gap)
--cleaning up
for i = #gapTable, 1, -1 do
local thisGap = gapTable[i]
if thisGap.x > display.contentWidth + 500 then
display.remove(thisGap)
table.remove(gapTable, i)
Runtime:removeEventListener("enterFrame", thisGap)
end
thisGap = nil
end
end
Runtime:addEventListener("enterFrame", frameTime)
gapLoopTimer = timer.performWithDelay(
loopTimerSpeed,
createGap,
0
)
Что вы имеете в виду, написав «позиционные различия». Вы имеете в виду промежутки между прямоугольниками? Что для вас важно? равные пробелы? – ldurniat
Да, я имею в виду пробелы между прямоугольниками и то, как эти зазоры также становятся больше и меняются по размеру, когда скорость цикла увеличивается. Это можно увидеть при выполнении этого с помощью симулятора Corona ... Это проблема для меня, потому что в моем реальном приложении в этом цикле есть несколько отображаемых объектов, которые должны быть полностью выровнены. – Footurist
Вы не знаете, о чем это? – Footurist