Difference between revisions of "love.graphics.present (日本語)"
m (Vsync blocking information.) |
m (→注釈: Translation updated) |
||
Line 17: | Line 17: | ||
== 注釈 == | == 注釈 == | ||
[[love.window.setMode (日本語)|love.window.setMode]] において <code>vsync</code> が <code>true</code> ならば、この関数はリフレッシュ・レートよりも頻繁に実行することができなくなり、必要な場合は準備を終えるまでプログラムを停止します。 | [[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> | ||
== 関連 == | == 関連 == |
Latest revision as of 10:34, 17 July 2023
画面への描画操作結果を表示します。
この関数は自分で love.run 関数を書く場合に使用します。これにより画面への描画結果を全て表示します。この関数の典型的な使用法については love.run の用例を参照してください。
関数
概要
love.graphics.present( )
引数
なし。
返値
ありません。
注釈
love.window.setMode において vsync
が true
ならば、この関数はリフレッシュ・レートよりも頻繁に実行することができなくなり、必要な場合は準備を終えるまでプログラムを停止します。
用例
ゲームの読み込み中にプログレスバーを表示
-- 用例で使うダミー関数。
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
関連
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info