Learn SOLAR2D with Real Code Examples
Updated Nov 24, 2025
Code Sample Descriptions
1
Solar2D Lua Example - Simple Counter
-- main.lua
local count = 0
local counterText = display.newText("Count: 0", display.contentCenterX, 100, native.systemFont, 40)
local function updateCount(delta)
count = count + delta
counterText.text = "Count: " .. count
end
local incButton = display.newText("+", display.contentCenterX - 50, 200, native.systemFont, 50)
incButton:addEventListener("tap", function() updateCount(1) end)
local decButton = display.newText("-", display.contentCenterX + 50, 200, native.systemFont, 50)
decButton:addEventListener("tap", function() updateCount(-1) end)
A simple Solar2D Lua script to increment and decrement a counter displayed on the screen.
2
Solar2D Lua Example - Moving Object
-- main.lua
local rect = display.newRect(display.contentCenterX, display.contentCenterY, 100, 100)
rect:setFillColor(1, 0, 0)
local function moveRect()
rect.x = rect.x + 2
if rect.x > display.contentWidth then
rect.x = 0
end
end
Runtime:addEventListener("enterFrame", moveRect)
Moves a display object across the screen continuously.
3
Solar2D Lua Example - Touch Drag
-- main.lua
local rect = display.newRect(display.contentCenterX, display.contentCenterY, 100, 100)
rect:setFillColor(0, 0, 1)
local function onTouch(event)
if event.phase == "moved" then
rect.x = event.x
rect.y = event.y
end
return true
end
rect:addEventListener("touch", onTouch)
Allows a rectangle to be dragged around the screen using touch input.
4
Solar2D Lua Example - Simple Button
-- main.lua
local button = display.newRect(display.contentCenterX, display.contentCenterY, 150, 80)
button:setFillColor(0, 1, 0)
local function onTap()
button:setFillColor(math.random(), math.random(), math.random())
end
button:addEventListener("tap", onTap)
Creates a button that changes color when tapped.
5
Solar2D Lua Example - Fade In/Out
-- main.lua
local circle = display.newCircle(display.contentCenterX, display.contentCenterY, 50)
circle:setFillColor(1, 0, 1)
local function fade()
transition.to(circle, {time=1000, alpha=0, onComplete=function()
transition.to(circle, {time=1000, alpha=1})
end})
end
fade()
Fades a circle in and out continuously.
6
Solar2D Lua Example - Simple Physics
-- main.lua
local physics = require("physics")
physics.start()
local ball = display.newCircle(display.contentCenterX, 50, 30)
physics.addBody(ball, "dynamic", {radius=30, bounce=0.8})
local ground = display.newRect(display.contentCenterX, display.contentHeight - 50, display.contentWidth, 50)
physics.addBody(ground, "static")
Applies physics to a falling object.
7
Solar2D Lua Example - Sprite Animation
-- main.lua
local sheetOptions = { width=64, height=64, numFrames=4 }
local sheet = graphics.newImageSheet("sprite.png", sheetOptions)
local sequence = { name="walk", start=1, count=4, time=400, loopCount=0 }
local sprite = display.newSprite(sheet, sequence)
sprite.x, sprite.y = display.contentCenterX, display.contentCenterY
sprite:play()
Animates a sprite using an image sheet.
8
Solar2D Lua Example - Timer Event
-- main.lua
local function sayHello()
print("Hello Solar2D!")
end
timer.performWithDelay(2000, sayHello, 0)
Displays a message every 2 seconds using a timer.
9
Solar2D Lua Example - Simple Scene
-- main.lua
local bg = display.newRect(display.contentCenterX, display.contentCenterY, display.contentWidth, display.contentHeight)
bg:setFillColor(0.5, 0.7, 1)
local title = display.newText("Welcome!", display.contentCenterX, 100, native.systemFontBold, 50)
Creates a basic scene with background and text.
10
Solar2D Lua Example - Audio Play
-- main.lua
local sound = audio.loadSound("click.wav")
local rect = display.newRect(display.contentCenterX, display.contentCenterY, 150, 80)
rect:setFillColor(1, 0.5, 0)
local function playSound()
audio.play(sound)
end
rect:addEventListener("tap", playSound)
Plays a sound effect when a rectangle is tapped.