Sprite:setBlendMode
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.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