Difference between revisions of "love.timer.sleep (Русский)"

Line 1: Line 1:
Приостанавливает программу на определенное количество времени.
+
{{newin|[[0.2.1]]|021|type=function}}
 +
Приостанавливает текущий поток на определённый промежуток времени.
 +
{{notice|Эта функция заставляет весь поток приостанавливаться на время сна. Графика не будет отрисовываться, события ввода не будут обрабатываться, код не будет выполняться, и окно не будет отвечать если вы будете использовать эту функцию как "wait()" в главном потоке. Вместо этого используйте [[love.update]] или [[love.timer (Русский)|Timer library]].}}
 
== Функция ==
 
== Функция ==
=== Вид ===
+
{{newin|[[0.8.0]]|080|type=behaviour}}
 +
=== Синопсис ===
 
<source lang="lua">
 
<source lang="lua">
 
love.timer.sleep( s )
 
love.timer.sleep( s )
 
</source>
 
</source>
 
=== Аргументы ===
 
=== Аргументы ===
{{param_(Русский)|number|s|Количество секунд, на которые надо приостановить программу.}}
+
{{param|number|s|Время сна в секундах.}}
 
=== Возвращает ===
 
=== Возвращает ===
 
Ничего.
 
Ничего.
== Примечание ==
+
== Функция ==
До версии 8.0 количество вводится в миллисекундах
+
{{oldin|[[0.8.0]]|080|type=behaviour}}
== Смотрите также ==
+
=== Синопсис ===
 +
<source lang="lua">
 +
love.timer.sleep( ms )
 +
</source>
 +
=== Аргументы ===
 +
{{param|number|ms|Время сна в миллисекундах.}}
 +
=== Возвращает ===
 +
Ничего.
 +
== Примеры ==
 +
=== Используйте сон, чтобы ограничить FPS до 30 ===
 +
<source lang="lua">
 +
function love.update(dt)
 +
  if dt < 1/30 then
 +
      love.timer.sleep(1/30 - dt)
 +
  end
 +
end
 +
</source>
 +
=== Более сложный способ ограничения до 30 FPS ===
 +
Этот пример учитывает время, потраченное на обновление и прорисовку каждого кадра.
 +
<source lang="lua">
 +
function love.load()
 +
  min_dt = 1/30
 +
  next_time = love.timer.getTime()
 +
end
 +
 
 +
function love.update(dt)
 +
  next_time = next_time + min_dt
 +
 
 +
  --остальной код функции здесь
 +
end
 +
 
 +
function love.draw()
 +
  --остальной код функции здесь
 +
 
 +
  local cur_time = love.timer.getTime()
 +
  if next_time <= cur_time then
 +
      next_time = cur_time
 +
      return
 +
  end
 +
  love.timer.sleep(next_time - cur_time)
 +
end
 +
</source>
 +
 
 +
== Смотри также ==
 
* [[parent::love.timer (Русский)]]
 
* [[parent::love.timer (Русский)]]
 
[[Category:Functions]]
 
[[Category:Functions]]
{{#set:Description=Приостанавливает программу на определенное количество времени.}}
+
{{#set:Description=Pauses the current thread for the specified amount of time.}}
 +
{{#set:Since=021}}
 +
{{#set:PrettySince=0.2.1}}
  
 
== Другие языки ==
 
== Другие языки ==
 
{{i18n|love.timer.sleep}}
 
{{i18n|love.timer.sleep}}

Revision as of 06:03, 19 November 2019

Available since LÖVE 0.2.1
This function is not supported in earlier versions.

Приостанавливает текущий поток на определённый промежуток времени.

O.png Эта функция заставляет весь поток приостанавливаться на время сна. Графика не будет отрисовываться, события ввода не будут обрабатываться, код не будет выполняться, и окно не будет отвечать если вы будете использовать эту функцию как "wait()" в главном потоке. Вместо этого используйте love.update или Timer library.  


Функция

Available since LÖVE 0.8.0
This behaviour is not supported in earlier versions.

Синопсис

love.timer.sleep( s )

Аргументы

number s
Время сна в секундах.

Возвращает

Ничего.

Функция

Removed in LÖVE 0.8.0
This behaviour is not supported in that and later versions.

Синопсис

love.timer.sleep( ms )

Аргументы

number ms
Время сна в миллисекундах.

Возвращает

Ничего.

Примеры

Используйте сон, чтобы ограничить FPS до 30

function love.update(dt)
   if dt < 1/30 then
      love.timer.sleep(1/30 - dt)
   end
end

Более сложный способ ограничения до 30 FPS

Этот пример учитывает время, потраченное на обновление и прорисовку каждого кадра.

function love.load()
   min_dt = 1/30
   next_time = love.timer.getTime()
end

function love.update(dt)
   next_time = next_time + min_dt

   --остальной код функции здесь
end

function love.draw()
   --остальной код функции здесь

   local cur_time = love.timer.getTime()
   if next_time <= cur_time then
      next_time = cur_time
      return
   end
   love.timer.sleep(next_time - cur_time)
end

Смотри также



Другие языки