Difference between revisions of "love.graphics.present (日本語)"

(Created page with "画面への描画操作結果を表示します。 この関数は自分で love.run 関数を書く場合に使用します。これにより画面...")
 
m (注釈: Translation updated)
 
(One intermediate revision by the same user not shown)
Line 2: Line 2:
  
 
この関数は自分で [[love.run (日本語)|love.run]] 関数を書く場合に使用します。これにより画面への描画結果を全て表示します。この関数の典型的な使用法については [[love.run (日本語)|love.run]] の用例を参照してください。
 
この関数は自分で [[love.run (日本語)|love.run]] 関数を書く場合に使用します。これにより画面への描画結果を全て表示します。この関数の典型的な使用法については [[love.run (日本語)|love.run]] の用例を参照してください。
 +
 
== 関数 ==
 
== 関数 ==
 
=== 概要 ===
 
=== 概要 ===
Line 7: Line 8:
 
love.graphics.present( )
 
love.graphics.present( )
 
</source>
 
</source>
 +
 
=== 引数 ===
 
=== 引数 ===
 
なし。
 
なし。
 +
 
=== 返値 ===
 
=== 返値 ===
 
ありません。
 
ありません。
 +
 +
== 注釈 ==
 +
[[love.window.setMode (日本語)|love.window.setMode]] において <code>vsync</code> が <code>true</code> ならば、この関数はリフレッシュ・レートよりも頻繁に実行することができなくなり、必要な場合は準備を終えるまでプログラムを停止します。
 +
 +
== 用例 ==
 +
 +
=== ゲームの読み込み中にプログレスバーを表示 ===
 +
<source lang="lua">
 +
-- 用例で使うダミー関数。
 +
local function loadSounds()  love.timer.sleep(1) end
 +
local function loadSprites() love.timer.sleep(1) end
 +
local function loadLevels()  love.timer.sleep(1) end
 +
 +
local font = nil
 +
 +
local function drawLoadingScreen(progress, text)
 +
local windowWidth, windowHeight = love.graphics.getDimensions()
 +
 +
-- テキストの描画。
 +
font = font or love.graphics.newFont(26)
 +
 +
local textX = math.floor((windowWidth - font:getWidth(text)) / 2)
 +
local textY = math.floor(windowHeight/2) - font:getHeight()
 +
 +
love.graphics.setColor(1, 1, 1)
 +
love.graphics.setFont(font)
 +
love.graphics.print(text, textX, textY)
 +
 +
-- プログレスバーの描画。
 +
local progressWidthFull    = 400
 +
local progressWidthCurrent = progress * progressWidthFull
 +
local progressHeight      = 20
 +
local progressX            = math.floor((windowWidth - progressWidthFull) / 2)
 +
local progressY            = math.floor(windowHeight/2)
 +
 +
love.graphics.setColor(.2, .2, .2)
 +
love.graphics.rectangle("fill", progressX, progressY, progressWidthFull, progressHeight)
 +
love.graphics.setColor(.1, .3, 1)
 +
love.graphics.rectangle("fill", progressX, progressY, progressWidthCurrent, progressHeight)
 +
end
 +
 +
local function presentLoadingScreen(progress, text)
 +
love.graphics.clear()
 +
drawLoadingScreen(progress, text)
 +
love.graphics.present()
 +
end
 +
 +
function love.load()
 +
presentLoadingScreen(0/3, "Loading sprites...") ; loadSprites()
 +
presentLoadingScreen(1/3, "Loading sounds...")  ; loadSounds()
 +
presentLoadingScreen(2/3, "Loading levels...")  ; loadLevels()
 +
end
 +
function love.draw()
 +
drawLoadingScreen(3/3, "Done loading!")
 +
end
 +
</source>
 +
 
== 関連 ==
 
== 関連 ==
 
* [[love.graphics.clear (日本語)]]
 
* [[love.graphics.clear (日本語)]]

Latest revision as of 10:34, 17 July 2023

画面への描画操作結果を表示します。

この関数は自分で love.run 関数を書く場合に使用します。これにより画面への描画結果を全て表示します。この関数の典型的な使用法については love.run の用例を参照してください。

関数

概要

love.graphics.present( )

引数

なし。

返値

ありません。

注釈

love.window.setMode において vsynctrue ならば、この関数はリフレッシュ・レートよりも頻繁に実行することができなくなり、必要な場合は準備を終えるまでプログラムを停止します。

用例

ゲームの読み込み中にプログレスバーを表示

-- 用例で使うダミー関数。
local function loadSounds()  love.timer.sleep(1) end
local function loadSprites() love.timer.sleep(1) end
local function loadLevels()  love.timer.sleep(1) end

local font = nil

local function drawLoadingScreen(progress, text)
	local windowWidth, windowHeight = love.graphics.getDimensions()

	-- テキストの描画。
	font = font or love.graphics.newFont(26)

	local textX = math.floor((windowWidth - font:getWidth(text)) / 2)
	local textY = math.floor(windowHeight/2) - font:getHeight()

	love.graphics.setColor(1, 1, 1)
	love.graphics.setFont(font)
	love.graphics.print(text, textX, textY)

	-- プログレスバーの描画。
	local progressWidthFull    = 400
	local progressWidthCurrent = progress * progressWidthFull
	local progressHeight       = 20
	local progressX            = math.floor((windowWidth - progressWidthFull) / 2)
	local progressY            = math.floor(windowHeight/2)

	love.graphics.setColor(.2, .2, .2)
	love.graphics.rectangle("fill", progressX, progressY, progressWidthFull, progressHeight)
	love.graphics.setColor(.1, .3, 1)
	love.graphics.rectangle("fill", progressX, progressY, progressWidthCurrent, progressHeight)
end

local function presentLoadingScreen(progress, text)
	love.graphics.clear()
	drawLoadingScreen(progress, text)
	love.graphics.present()
end

function love.load()
	presentLoadingScreen(0/3, "Loading sprites...") ; loadSprites()
	presentLoadingScreen(1/3, "Loading sounds...")  ; loadSounds()
	presentLoadingScreen(2/3, "Loading levels...")  ; loadLevels()
end
function love.draw()
	drawLoadingScreen(3/3, "Done loading!")
end

関連


そのほかの言語