Mobile Controls
From GiderosMobile
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Here you will find various resources to help you create games and apps in Gideros Studio.
note: You may have to provide your own assets (fonts, gfx, …).
Description
This class allows you to control your player, on your mobile device, using buttons.
It has 4 buttons: right, left, A, B.
note: this class uses the UI_Buttons#Button_with_Text class, but you are free to use any other kind of buttons.
Sample image:
Mobile Controls Class
Mobile = Core.class(Sprite)
function Mobile:init(xplayer1)
self:myButtons(xplayer1)
end
-- BUTTONS/TOUCH HANDLER
function Mobile:myButtons(xplayer1)
--function ButtonText:init(text, tfont, tcolor, tscalex, tscaley, upState, downState)
local mybtnright = ButtonText.new(">", nil, 0xffffff, 12, 8)
mybtnright:setPosition(myappwidth - mybtnright:getWidth() / 2, myappheight)
self:addChild(mybtnright)
local mybtnleft = ButtonText.new("<", nil, 0xffffff, 12, 8)
mybtnleft:setPosition(myappwidth - mybtnleft:getWidth() / 2 - mybtnright:getWidth() - 32, myappheight)
self:addChild(mybtnleft)
local mybtnA = ButtonText.new("A", nil, 0xffffff, 8, 8)
mybtnA:setPosition(mybtnA:getWidth() / 2, myappheight)
self:addChild(mybtnA)
local mybtnB = ButtonText.new("B", nil, 0xffffff, 8, 8)
mybtnB:setPosition(mybtnB:getWidth() / 2 + mybtnA:getWidth() + 8, myappheight - 24)
self:addChild(mybtnB)
-- buttons listenners
-- right
mybtnright:addEventListener(Event.TOUCHES_BEGIN, function(e)
if mybtnright:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyright = true
xplayer1.iskeyleft = false
end
end)
mybtnright:addEventListener(Event.TOUCHES_END, function(e)
if mybtnright:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyright = false
end
end)
mybtnright:addEventListener(Event.TOUCHES_CANCEL, function(e)
if mybtnright:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyright = false
end
end)
mybtnright:addEventListener(Event.TOUCHES_MOVE, function(e)
if mybtnleft:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyright = false
xplayer1.iskeyleft = true
end
end)
-- left
mybtnleft:addEventListener(Event.TOUCHES_BEGIN, function(e)
if mybtnleft:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyleft = true
xplayer1.iskeyright = false
end
end)
mybtnleft:addEventListener(Event.TOUCHES_END, function(e)
if mybtnleft:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyleft = false
end
end)
mybtnleft:addEventListener(Event.TOUCHES_CANCEL, function(e)
if mybtnleft:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyleft = false
end
end)
mybtnleft:addEventListener(Event.TOUCHES_MOVE, function(e)
if mybtnright:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyleft = false
xplayer1.iskeyright = true
end
end)
-- A (down)
mybtnA:addEventListener(Event.TOUCHES_BEGIN, function(e)
if mybtnA:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeydown = true
end
end)
mybtnA:addEventListener(Event.TOUCHES_END, function(e)
if mybtnA:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeydown = false
end
end)
mybtnA:addEventListener(Event.TOUCHES_CANCEL, function(e)
if mybtnA:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeydown = false
end
end)
mybtnA:addEventListener(Event.TOUCHES_MOVE, function(e)
if mybtnB:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeydown = false
xplayer1.iskeyup = true
end
end)
-- B (jump)
mybtnB:addEventListener(Event.TOUCHES_BEGIN, function(e)
if mybtnB:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyup = true
end
end)
mybtnB:addEventListener(Event.TOUCHES_END, function(e)
if mybtnB:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyup = false
end
end)
mybtnB:addEventListener(Event.TOUCHES_CANCEL, function(e)
if mybtnB:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyup = false
end
end)
mybtnB:addEventListener(Event.TOUCHES_MOVE, function(e)
if mybtnA:hitTestPoint(e.touch.x, e.touch.y) then
xplayer1.iskeyup = false
xplayer1.iskeydown = true
end
end)
end
Usage
In this example we have a class variable called player1. We pass it as an argument to the Mobile class.
-- mobile controls
local mymobile = Mobile.new(self.player1)
self:addChild(mymobile)