Quick Links: Download Gideros Studio | Gideros Documentation | Gideros Development Center | Gideros community chat | DONATE
Is there a better implementation to record gesture? — Gideros Forum

Is there a better implementation to record gesture?

koeosstudiokoeosstudio Member
edited July 2021 in Code snippets
I have a function that records gesture/or doodle for my game.
When the user start touching the screen, the function will start recording the movement of the finger in the screen.
Then when the user release his finger from the screen, the function will replay the movement of the users finger.
I have a working code below, but I have a doubt on it's efficiency. I tried running it on a mid range device, it was smooth but I don't know if lower end device can handle it. Please review my code below. A better and more efficient implementation will be greatly appreciated. Thanks :)
 
--settings
application:	setLogicalDimensions	(720, 1440)
application:	setScaleMode			('letterbox')
application:	setOrientation			('portrait')
application:	setKeyboardVisibility	(false)
application:	setKeepAwake			(true)
application:	setFps					(60)
application:	setBackgroundColor		(0x11272c) 
w, h = application:getLogicalWidth(), application:getLogicalHeight()
 
 
-- Function that record a gesture and replays it
--Create box
local img = Pixel.new(0xffffff,1,50,50)
img:setAnchorPoint(0.5, 0.5)
stage:addChild(img)
 
--Table and array for saving coordinate
local g = {}
local i = 1
 
local function d(event) --Gets the starting point
	g = nil
	g = {}
	collectgarbage()
	i = 1
	g[i] = {event.touch.x, event.touch.y}
end
stage:addEventListener(Event.TOUCHES_BEGIN, d)
 
 
local function m(event) --saves coordinate inside the table
	i = i + 1
	g[i] = {event.touch.x, event.touch.y}
end
stage:addEventListener(Event.TOUCHES_MOVE, m)
 
local function u(event) --replay the coordinates from table using gtween
	i = 1
	img:setPosition(g[i][1], g[i][2])
	local function run()
		local t = GTween.new(img, 0.01, {x = g[i][1], y= g[i][2]}, {delay = 0, ease = easing.linear, dispatchEvents = true})
		t:addEventListener('complete', function()
			if i < #g then
				i = i + 1
				run()
			end
		end)
	end
 
	run()
end
stage:addEventListener(Event.TOUCHES_END, u)
 
--I would also like to put trail on the gesture, like a doodling effect but I don't know how
Tagged:
+1 -1 (+2 / -0 )Share on Facebook

Comments

Sign In or Register to comment.