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

(函数本体)
(Function)
Line 2: Line 2:
 
需要提醒,当新坐标体系上的物品绘制结束后必须使用[[love.graphics.pop]]函数使坐标体系返回至默认状态,否则love2d将会报错。
 
需要提醒,当新坐标体系上的物品绘制结束后必须使用[[love.graphics.pop]]函数使坐标体系返回至默认状态,否则love2d将会报错。
  
== Function ==
+
== 函数介绍 ==
 
Pushes the current transformation to the transformation stack.
 
Pushes the current transformation to the transformation stack.
=== 介绍 ===
+
=== 简介 ===
 
<source lang="lua">
 
<source lang="lua">
 
love.graphics.push( )
 
love.graphics.push( )

Revision as of 02:39, 18 September 2015

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

函数介绍

Pushes the current transformation to the transformation stack.

简介

love.graphics.push( )

参数

无参数

返回值

无返回值

Function

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

Pushes a specific type of state to the stack.

Synopsis

love.graphics.push( stack )

Arguments

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

Returns

Nothing.

Examples

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