Difference between revisions of "love.graphics.push (简体中文)"

(返回值)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<code>love.graphics.push</code>的作用是保存当前的坐标体系并将其激活到可修改状态(英文直译:推动到转换栈),然后可以使用[[love.graphics.scale]]以及[[love.graphics.translate]]等函数修改当前的坐标体系至一个新的坐标体系,在这个新的坐标体系上绘制的物体会发生形态变化(如放大和缩小、翻转、平移等),当制作地图功能和地图上的视角追踪(或称摄像机,camera)功能时这一功能尤为重要。
+
<code>love.graphics.push</code>的作用是保存当前的坐标体系并将其激活到可修改状态(英文直译:推动到转换栈),然后可以使用[[love.graphics.scale]]以及[[love.graphics.translate]]等函数修改当前的坐标体系至一个新的坐标体系,在这个新的坐标体系上绘制的物体会发生形态变化(如放大和缩小、翻转、平移等),当制作视角追踪(或称摄像机,camera)功能时这一功能尤为重要。
需要提醒,当新坐标体系上的物品绘制结束后必须使用[[love.graphics.pop]]函数使坐标体系返回至默认状态,否则love2d将会报错。
+
需要提醒,当新坐标体系上的物体绘制结束后必须使用[[love.graphics.pop]]函数将保存修改状态下的坐标体系的绘制效果,并使坐标体系返回至修改前的默认状态。
 +
*请注意,push和pop必须配合使用,否则LÖVE将会报错。
  
 
== 函数介绍 ==
 
== 函数介绍 ==
Line 14: Line 15:
 
=== 返回值 ===
 
=== 返回值 ===
 
无返回值
 
无返回值
----
 
  
 
== 函数介绍 ==
 
== 函数介绍 ==
Line 29: Line 29:
 
无返回值
 
无返回值
  
== Examples ==
+
== 示例 ==
 
Modify and restore the coordinate system.
 
Modify and restore the coordinate system.
 
<source lang="lua">
 
<source lang="lua">
Line 67: Line 67:
  
 
== See Also ==
 
== See Also ==
* [[parent::love.graphics]]
+
* [[parent::love.graphics (简体中文)]]
 
* [[love.graphics.pop]]
 
* [[love.graphics.pop]]
 
* [[love.graphics.translate]]
 
* [[love.graphics.translate]]

Latest revision as of 03:24, 19 September 2015

love.graphics.push的作用是保存当前的坐标体系并将其激活到可修改状态(英文直译:推动到转换栈),然后可以使用love.graphics.scale以及love.graphics.translate等函数修改当前的坐标体系至一个新的坐标体系,在这个新的坐标体系上绘制的物体会发生形态变化(如放大和缩小、翻转、平移等),当制作视角追踪(或称摄像机,camera)功能时这一功能尤为重要。 需要提醒,当新坐标体系上的物体绘制结束后必须使用love.graphics.pop函数将保存修改状态下的坐标体系的绘制效果,并使坐标体系返回至修改前的默认状态。

  • 请注意,push和pop必须配合使用,否则LÖVE将会报错。

函数介绍

第一种用法,无参数,功能是将当前坐标体系激活至可修改状态。

简介

love.graphics.push( )

参数

无参数

返回值

无返回值

函数介绍

Available since LÖVE 0.9.2
This variant is not supported in earlier versions.

Pushes a specific type of state to the stack.

简介

love.graphics.push( stack )

参数

StackType stack
The type of stack to push (e.g. just transformation state, or all love.graphics state).

返回值

无返回值

示例

Modify and restore the coordinate system.

function love.draw()
	love.graphics.push() -- 储存默认的坐标体系
	love.graphics.translate(...) -- 移动摄像机的位置
	love.graphics.scale(...) -- 放大(缩小)视角
	-- 使用新的坐标体系去绘制被观察的物体
	love.graphics.pop() -- 回到默认的坐标体系
	-- 使用屏幕的坐标绘制状态显示
end

Available since LÖVE 0.9.2
This example is not supported in earlier versions.

Modify love.graphics state in a function, and restore it easily so other code isn't disturbed.

function DrawCoolThing()
    love.graphics.push("all") -- save all love.graphics state so any changes can be restored

    love.graphics.setColor(0, 0, 255)
    love.graphics.setBlendMode("subtractive")

    love.graphics.circle("fill", 400, 300, 80)

    love.graphics.pop() -- restore the saved love.graphics state
end

function love.draw()
    love.graphics.setColor(255, 128, 128)
    love.graphics.circle("fill", 400, 300, 100)

    DrawCoolThing()

    love.graphics.rectangle("fill", 600, 200, 200, 200) -- still uses the color set at the top of love.draw
end

See Also


Other Languages