Difference between revisions of "Pixel"

From GiderosMobile
 
(2 intermediate revisions by the same user not shown)
Line 41: Line 41:
 
'''Moving stars in a gradient sky'''
 
'''Moving stars in a gradient sky'''
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
-- a gradient bg
+
-- moving stars in a gradient sky by: @PaulH
local bggradient = Pixel.new(0xffffff, 1, 800, 480) -- set a white color to start with
+
local width, height = 640, 360
bggradient:setColor(0x0, 1, 0x00007f, 1, -90) -- a gradient set horizontally
+
-- a gradient sky
bggradient:setAnchorPoint(0.5, 0.5)
+
local sky = Pixel.new(0xffffff, 1, width, height)
 +
sky:setColor(0x3a597c, 1, 0x4d0074, 1, 90) -- a gradient set horizontally
 
-- stars
 
-- stars
 
local spritestars = Sprite.new() -- a sprite to hold all star shapes
 
local spritestars = Sprite.new() -- a sprite to hold all star shapes
for i = 1, 512 do -- @PaulH
+
for i = 1, 256 do -- @PaulH
 
local s = Shape.new()
 
local s = Shape.new()
 
s:setLineStyle(2, 0xffffff)
 
s:setLineStyle(2, 0xffffff)
Line 53: Line 54:
 
s:lineTo(1, 1)
 
s:lineTo(1, 1)
 
s:endPath()
 
s:endPath()
s:setPosition(math.random(0, 800), math.random(0, 480))
+
s:setPosition(math.random(0, width), math.random(0, 2.2*height/3))
 
s:setScale(math.random(5, 15) / 10)
 
s:setScale(math.random(5, 15) / 10)
 
s:setAlpha(math.random(10, 50) / 50)
 
s:setAlpha(math.random(10, 50) / 50)
 
spritestars:addChild(s)
 
spritestars:addChild(s)
 
end
 
end
-- render stars to a render target (rt is in portrait mode)
+
-- render stars to a render target
--local rtstars = RenderTarget.new(800, 480, nil, true, nil, nil, nil, false) -- BUG?
+
local rtstars = RenderTarget.new(width, height, nil, { wrap="repeat", extend=false, })
local rtstars = RenderTarget.new(800, 480)
 
 
rtstars:draw(spritestars)
 
rtstars:draw(spritestars)
rtstars:save("|T|bgstars.png") -- TO FIX BUG
 
 
-- create an image (Pixel) of the stars
 
-- create an image (Pixel) of the stars
--local bgstars = Pixel.new(rtstars, 800, 480) -- BUG?
+
local stars = Pixel.new(rtstars, width, height)
local texstars = Texture.new("|T|bgstars.png", nil, {wrap=TextureBase.REPEAT, extend=false}) -- TO FIX BUG
+
stars:setColorTransform(7/255, 221/255, 219/255, 1) -- stars color
local bgstars = Pixel.new(texstars, 800, 480) -- TO FIX BUG
 
bgstars:setAnchorPoint(0.5, 0.5)
 
local texscale = 0.7
 
bgstars:setTextureScale(texscale, texscale)
 
-- position
 
bggradient:setPosition(800/2, 480/2)
 
bgstars:setPosition(800/2, 480/2)
 
 
-- order
 
-- order
stage:addChild(bggradient)
+
stage:addChild(sky)
stage:addChild(bgstars)
+
stage:addChild(stars)
  
 
-- game loop
 
-- game loop
Line 81: Line 73:
 
function onEnterFrame(e)
 
function onEnterFrame(e)
 
-- move the stars
 
-- move the stars
velx -= e.deltaTime * 128
+
velx -= e.deltaTime * 32 -- 128
bgstars:setTexturePosition(velx, 0)
+
stars:setTexturePosition(velx, 0)
 
end
 
end
 
stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)
 
stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)

Latest revision as of 20:53, 1 February 2025

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.png
Available since: Gideros 2016.06
Inherits from: Sprite

Description

A rectangular Sprite which can be filled with solid colors, gradients or textures. Pixel aims at being a simpler and faster alternative to Shape when needing to display a coloured box or box with a gradient. It is also useful as Bitmap replacement since every texture will be fitted into Pixel dimensions automatically.

Examples

local mypixel = Pixel.new(0x0000FF, 0.75, 128, 128)
mypixel:setAnchorPoint(0.5, 0.5)
mypixel:setPosition(application:getContentWidth() / 2, 64)

stage:addChild(mypixel)
application:setBackgroundColor(0x323232)
local p = Pixel.new(0xffffff, 1, 32, 32)
 
p:set("redMultiplier", 1) -- OK
p:set("greenMultiplier", 0) -- OK
p:set("blueMultiplier", 0) -- OK
p:set("alphaMultiplier", 1) -- OK
--p:set("anchorX", .5) -- NOT OK
--p:set("anchorY", .5) -- NOT OK
p:set("anchorX", 16) -- OK
p:set("anchorY", 16) -- OK
p:set("alpha", .5) -- OK
p:set("scaleX", 1.5) -- OK
p:set("rotation", 10) -- OK
p:set("x", 32) -- OK
p:set("y", 32) -- OK

stage:addChild(p)

Moving stars in a gradient sky

-- moving stars in a gradient sky by: @PaulH
local width, height = 640, 360
-- a gradient sky
local sky = Pixel.new(0xffffff, 1, width, height)
sky:setColor(0x3a597c, 1, 0x4d0074, 1, 90) -- a gradient set horizontally
-- stars
local spritestars = Sprite.new() -- a sprite to hold all star shapes
for i = 1, 256 do -- @PaulH
	local s = Shape.new()
	s:setLineStyle(2, 0xffffff)
	s:moveTo(0, 0)
	s:lineTo(1, 1)
	s:endPath()
	s:setPosition(math.random(0, width), math.random(0, 2.2*height/3))
	s:setScale(math.random(5, 15) / 10)
	s:setAlpha(math.random(10, 50) / 50)
	spritestars:addChild(s)
end
-- render stars to a render target
local rtstars = RenderTarget.new(width, height, nil, { wrap="repeat", extend=false, })
rtstars:draw(spritestars)
-- create an image (Pixel) of the stars
local stars = Pixel.new(rtstars, width, height)
stars:setColorTransform(7/255, 221/255, 219/255, 1) -- stars color
-- order
stage:addChild(sky)
stage:addChild(stars)

-- game loop
local velx = 0
function onEnterFrame(e)
	-- move the stars
	velx -= e.deltaTime * 32 -- 128
	stars:setTexturePosition(velx, 0)
end
stage:addEventListener(Event.ENTER_FRAME, onEnterFrame)

Methods

Pixel.new creates a new Pixel
Pixel.new constructor to create a Pixel with texture in letterbox mode
Pixel:getColor returns the color(s) of the Pixel
Pixel:getDimensions returns the current size of the Pixel
Pixel:getTexturePosition returns the texture position
Pixel:getTextureScale returns the texture scale
Pixel:setColor sets the color of the Pixel
Pixel:setColor sets a gradient
Pixel:setColor sets a 4-colour gradient
Pixel:setDimensions sets both width and height of the Pixel
Pixel:setHeight sets the height of the Pixel sprite
Pixel:setNinePatch sets a 9-patch style texture rendering
Pixel:setTexture attaches a texture to the Pixel
Pixel:setTextureMatrix specifies a transform matrix for the texture
Pixel:setTexturePosition sets a texture position
Pixel:setTextureScale sets a texture scale
Pixel:setWidth sets the width of the Pixel sprite

Events

Constants