#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Posts: 39

# Hello, World!

While working on a project I wanted a way to trigger two or more tweens at once in a sequence. The following function is my solution. I am sure the following has been done before but searched already to find no results.

``````-- Trigger two or more tweens at once in a sequence

-- Syntax:
-- tween.pair({t1, t2, t3...})

function tween.pair(tweens)
for i,t in pairs(tweens) do
tween.sequence(t)
end
end
``````

I know using `tween.sequence()` is not exactly the most creative aproach, but I don't fully understand how `tweens` work and it seemed the easiest way to me. I am open for better ways to do this.

I also wanted to make the syntax simpler using the `arg` table described in @Ignatz 's book 'Lua for beginners but got an error when I used this. If anyone can explain why or how to fix this I am open for it.

Tagged:

• edited January 2017 Posts: 5,197

Great little function! The variable argument syntax changed in Lua 5.3, there's a thread here:

https://codea.io/talk/discussion/6330/codea-2-3-lua-5-3/p1

Here's how you do it:

``````function foo(...)
-- get the number of args
local n = select('#', ...)

-- make a table out of the args
local arg = {...}

if n > 0 then
print(arg)
end
end
``````
• Posts: 8,188

@jaj_TheDeveloper Here's something I wrote some time ago that shows multiple tweens being started and running at the same time. There are 768 tweens, one for each square. Tap the screen to start them in motion. It's set to run for 15 seconds.

``````supportedOrientations(PORTRAIT_ANY)
displayMode(FULLSCREEN)

function setup()
spriteMode(CORNER)
tab={}
w=img.width/24
h=img.height/32
for x=1,24 do
for y=1,32 do
table.insert(tab,img:copy((x-1)*32+1,(y-1)*32+1,32,32))
end
end
twTab={}
count=0
for x=1,24 do
for y=1,32 do
count=count+1
table.insert(twTab,
twn(15,math.random(WIDTH),math.random(HEIGHT),
(x-1)*32+1,(y-1)*32+1,count))
end
end
end

function draw()
background(0)
for a,b in pairs(twTab) do
b:draw()
end
end

function touched(t)
if t.state==BEGAN then
for a,b in pairs(twTab) do
b:start()
end
end
end

twn=class()

function twn:init(t,xs,ys,xe,ye,nbr)
self.col=color(math.random(255),math.random(255),math.random(255))
self.starts={x=xs,y=ys}
self.ends={x=xe,y=ye}
self.time=t
self.nbr=nbr
end

function twn:start()
tween(self.time,self.starts,self.ends,tween.easing.elasticInInOut)
end

function twn:draw()
fill(self.col)
sprite(tab[self.nbr],self.starts.x,self.starts.y)
end
``````
• Posts: 8,188

@jaj_TheDeveloper Here's another example for doing multiple arguments.

``````function setup()
xxx("aa","bb","cc","dd","ee")
end

function xxx(...)
args={...}
for a,b in pairs(args) do
print(a,b)
end
end
``````