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 において 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