Difference between revisions of "Sprite:setBlendMode"
m (Text replacement - "</source>" to "</syntaxhighlight>") |
|||
Line 44: | Line 44: | ||
'''dst''': (String) destination blend mode '''optional'''<br/> | '''dst''': (String) destination blend mode '''optional'''<br/> | ||
− | === | + | === Examples === |
+ | '''All blend modes''' | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
for x = 1, 11 do | for x = 1, 11 do | ||
Line 56: | Line 57: | ||
end | end | ||
end | end | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | '''Spot light''' | ||
+ | '''note: you have to provide your own asset''' | ||
+ | <syntaxhighlight lang="lua"> | ||
+ | --[[ | ||
+ | Script: spotlight | ||
+ | Description: Show how to create an animated spot light of the Gideros logo | ||
+ | Author: Michael Hartlef | ||
+ | Contact: mike@fantomgl.com | ||
+ | --]] | ||
+ | |||
+ | -- Load the mask images (can be a gradient or a plain image) | ||
+ | --local mask = Bitmap.new(Texture.new("images/maskCircle2.png")) -- semi-transparent | ||
+ | local mask = Bitmap.new(Texture.new("images/carmo.png")) -- plain image | ||
+ | -- Set its anchor point in the center | ||
+ | mask:setAnchorPoint(0.5, 0.5) | ||
+ | -- Scale it up by a factor of 3 | ||
+ | mask:setScale(3) | ||
+ | -- change alpha | ||
+ | mask:setAlpha(2) | ||
+ | -- Position the mask in the middle of the simulator | ||
+ | mask:setPosition(application:getLogicalHeight()/2,application:getLogicalWidth()/2) | ||
+ | -- Set its speed and direction values | ||
+ | mask.speedX = 2 | ||
+ | mask.speedY = 1 | ||
+ | mask.dirX=1 | ||
+ | mask.dirY=1 | ||
+ | --Add the mask to the stage | ||
+ | stage:addChild(mask) | ||
+ | |||
+ | --Now load the logo image | ||
+ | local logo = Bitmap.new(Texture.new("images/carmo.png")) | ||
+ | -- Set its anchor point to the center | ||
+ | logo:setAnchorPoint(0.5, 0.5) | ||
+ | -- Scale it down to a half | ||
+ | logo:setScale(10) | ||
+ | -- Position the logo in the middle of the simulator | ||
+ | logo:setPosition(application:getLogicalHeight()/2,application:getLogicalWidth()/2) | ||
+ | --Now set the blend mode | ||
+ | logo:setBlendMode(Sprite.MULTIPLY) | ||
+ | -- Add the logo to the stage | ||
+ | stage:addChild(logo) | ||
+ | |||
+ | -- Set the background color of the stage to black (you can experiment) | ||
+ | stage:setBackgroundColor(0.07, 0.07, 0.07) -- r, g, b | ||
+ | |||
+ | -- Define the onEnterFrame event function. This deals with the positioning of the mask | ||
+ | function onEnterFrame(event) | ||
+ | -- Get the position of the maks | ||
+ | local x, y = mask:getPosition() | ||
+ | -- Calculate the new position | ||
+ | x += (mask.speedX * mask.dirX) | ||
+ | y += (mask.speedY * mask.dirY) | ||
+ | -- Check if the mask reaches the edges of the canvas and then mirror its movement. | ||
+ | if x < 0 then mask.dirX = 1 end | ||
+ | if x > application:getLogicalHeight() then mask.dirX = -1 end | ||
+ | if y < 0 then mask.dirY = 1 end | ||
+ | if y > application:getLogicalWidth() then mask.dirY = -1 end | ||
+ | -- Set the new position of the mask | ||
+ | mask:setPosition(x,y) | ||
+ | end | ||
+ | |||
+ | -- Register an enterFrame event handler function | ||
+ | stage:addEventListener(Event.ENTER_FRAME, onEnterFrame) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Sprite}} | {{Sprite}} |
Latest revision as of 00:34, 2 December 2023
Available since: Gideros 2011.6
Class: Sprite
Description
Sets the blend mode of the sprite.
Sprite:setBlendMode(blendMode or src,dst)
This method can be called with 1 or 2 parameters.
If one parameter is passed it must be one of the following blending modes:
- Sprite.ALPHA = "alpha"
- Sprite.NO_ALPHA = "noAlpha"
- Sprite.ADD = "add"
- Sprite.MULTIPLY = "multiply"
- Sprite.SCREEN = "screen"
If a Sprite object doesn't set any blending mode, it takes the blending mode from its parent sprite.
Note: the following two lines are completely the same:
sprite:setBlendMode("add")
sprite:setBlendMode(Sprite.ADD)
It's a matter of taste which one to choose.
If two parameters are passed to this method, then a source and destination blend can be set (in that order) and each takes the values:
- Sprite.ZERO = "zero"
- Sprite.ONE = "one"
- Sprite.SRC_COLOR = "srcColor"
- Sprite.ONE_MINUS_SRC_COLOR = "oneMinusSrcColor"
- Sprite.DST_COLOR = "dstColor"
- Sprite.ONE_MINUS_DST_COLOR = "oneMinusDstColor"
- Sprite.SRC_ALPHA = "srcAlpha"
- Sprite.ONE_MINUS_SRC_ALPHA = "oneMinusSrcAlpha"
- Sprite.DST_ALPHA = "dstAlpha"
- Sprite.ONE_MINUS_DST_ALPHA = "oneMinusDstAlpha"
- Sprite.SRC_ALPHA_SATURATE = "srcAlphaSaturate"
Parameters
blendMode or src: (String) if one parameter is used, this is the blend mode. If two parameters are used this is the source blend specification
dst: (String) destination blend mode optional
Examples
All blend modes
for x = 1, 11 do
for y = 1, 11 do
local top = Pixel.new(topTex, s, s)
local btm = Pixel.new(btmTex, s, s)
stage:addChild(btm)
btm:addChild(top)
btm:setBlendMode(x, y)
btm:setPosition(lh + s * (x-1), lh + s * (y-1))
end
end
Spot light
note: you have to provide your own asset
--[[
Script: spotlight
Description: Show how to create an animated spot light of the Gideros logo
Author: Michael Hartlef
Contact: mike@fantomgl.com
--]]
-- Load the mask images (can be a gradient or a plain image)
--local mask = Bitmap.new(Texture.new("images/maskCircle2.png")) -- semi-transparent
local mask = Bitmap.new(Texture.new("images/carmo.png")) -- plain image
-- Set its anchor point in the center
mask:setAnchorPoint(0.5, 0.5)
-- Scale it up by a factor of 3
mask:setScale(3)
-- change alpha
mask:setAlpha(2)
-- Position the mask in the middle of the simulator
mask:setPosition(application:getLogicalHeight()/2,application:getLogicalWidth()/2)
-- Set its speed and direction values
mask.speedX = 2
mask.speedY = 1
mask.dirX=1
mask.dirY=1
--Add the mask to the stage
stage:addChild(mask)
--Now load the logo image
local logo = Bitmap.new(Texture.new("images/carmo.png"))
-- Set its anchor point to the center
logo:setAnchorPoint(0.5, 0.5)
-- Scale it down to a half
logo:setScale(10)
-- Position the logo in the middle of the simulator
logo:setPosition(application:getLogicalHeight()/2,application:getLogicalWidth()/2)
--Now set the blend mode
logo:setBlendMode(Sprite.MULTIPLY)
-- Add the logo to the stage
stage:addChild(logo)
-- Set the background color of the stage to black (you can experiment)
stage:setBackgroundColor(0.07, 0.07, 0.07) -- r, g, b
-- Define the onEnterFrame event function. This deals with the positioning of the mask
function onEnterFrame(event)
-- Get the position of the maks
local x, y = mask:getPosition()
-- Calculate the new position
x += (mask.speedX * mask.dirX)
y += (mask.speedY * mask.dirY)
-- Check if the mask reaches the edges of the canvas and then mirror its movement.
if x < 0 then mask.dirX = 1 end
if x > application:getLogicalHeight() then mask.dirX = -1 end
if y < 0 then mask.dirY = 1 end
if y > application:getLogicalWidth() then mask.dirY = -1 end
-- Set the new position of the mask
mask:setPosition(x,y)
end
-- Register an enterFrame event handler function
stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)
- Sprite:addChild
- Sprite:addChildAt
- Sprite:clearBlendMode
- Sprite:clone
- Sprite:contains
- Sprite:get
- Sprite:getAlpha
- Sprite:getAnchorPoint
- Sprite:getAnchorPosition
- Sprite:getBounds
- Sprite:getChildAt
- Sprite:getChildIndex
- Sprite:getChildrenAtPoint
- Sprite:getClip
- Sprite:getColorTransform
- Sprite:getDrawCount
- Sprite:getHeight
- Sprite:getLayoutConstraints
- Sprite:getLayoutInfo
- Sprite:getLayoutParameters
- Sprite:getMatrix
- Sprite:getNumChildren
- Sprite:getParent
- Sprite:getPosition
- Sprite:getRotation
- Sprite:getRotationX
- Sprite:getRotationY
- Sprite:getScale
- Sprite:getScaleX
- Sprite:getScaleY
- Sprite:getScaleZ
- Sprite:getSize
- Sprite:getSkew
- Sprite:getSkewX
- Sprite:getSkewY
- Sprite:getWidth
- Sprite:getX
- Sprite:getY
- Sprite:getZ
- Sprite:globalToLocal
- Sprite:hitTestPoint
- Sprite:isVisible
- Sprite:localToGlobal
- Sprite:redrawEffects
- Sprite:removeChild
- Sprite:removeChildAt
- Sprite:removeFromParent
- Sprite:set
- Sprite:setAlpha
- Sprite:setAnchorPoint
- Sprite:setAnchorPosition
- Sprite:setBlendMode
- Sprite:setClip
- Sprite:setColorTransform
- Sprite:setEffectConstant
- Sprite:setEffectStack
- Sprite:setGhosts
- Sprite:setLayoutConstraints
- Sprite:setLayoutParameters
- Sprite:setMatrix
- Sprite:setPosition
- Sprite:setRotation
- Sprite:setRotationX
- Sprite:setRotationY
- Sprite:setScale
- Sprite:setScaleX
- Sprite:setScaleY
- Sprite:setScaleZ
- Sprite:setShader
- Sprite:setShaderConstant
- Sprite:setSkew
- Sprite:setSkewX
- Sprite:setSkewY
- Sprite:setStencilOperation
- Sprite:setStopEventPropagation
- Sprite:setVisible
- Sprite:setX
- Sprite:setY
- Sprite:setZ
- Sprite:spriteToLocal
- Sprite:swapChildren
- Sprite:swapChildrenAt
- Sprite.ADD
- Sprite.ALPHA
- Sprite.EFFECT MODE AUTOMATIC
- Sprite.EFFECT MODE CONTINUOUS
- Sprite.EFFECT MODE TRIGGERED
- Sprite.LAYOUT ANCHOR CENTER
- Sprite.LAYOUT ANCHOR EAST
- Sprite.LAYOUT ANCHOR NORTH
- Sprite.LAYOUT ANCHOR NORTHEAST
- Sprite.LAYOUT ANCHOR NORTHWEST
- Sprite.LAYOUT ANCHOR SOUTH
- Sprite.LAYOUT ANCHOR SOUTHEAST
- Sprite.LAYOUT ANCHOR SOUTHWEST
- Sprite.LAYOUT ANCHOR WEST
- Sprite.LAYOUT FILL BOTH
- Sprite.LAYOUT FILL HORIZONTAL
- Sprite.LAYOUT FILL NONE
- Sprite.LAYOUT FILL VERTICAL
- Sprite.MULTIPLY
- Sprite.NO ALPHA
- Sprite.SCREEN
- Sprite.new
- Event.ADDED_TO_STAGE
- Event.ENTER_FRAME
- Event.KEY_CHAR
- Event.KEY_DOWN
- Event.KEY_UP
- Event.LAYOUT_RESIZED
- Event.MOUSE_DOWN
- Event.MOUSE_ENTER
- Event.MOUSE_HOVER
- Event.MOUSE_LEAVE
- Event.MOUSE_MOVE
- Event.MOUSE_UP
- Event.MOUSE_WHEEL
- Event.REMOVED_FROM_STAGE
- Event.TOUCHES_BEGIN
- Event.TOUCHES_CANCEL
- Event.TOUCHES_END
- Event.TOUCHES_MOVE