Difference between revisions of "Core.asyncCall"
From GiderosMobile
(added random example :-() |
|||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | __NOTOC__ | ||
'''Available since:''' Gideros 2016.06<br/> | '''Available since:''' Gideros 2016.06<br/> | ||
'''Class:''' [[Core]]<br/> | '''Class:''' [[Core]]<br/> | ||
Line 4: | Line 5: | ||
=== Description === | === Description === | ||
Launches a function on a separate thread as a background task. | Launches a function on a separate thread as a background task. | ||
− | < | + | <syntaxhighlight lang="lua"> |
Core.asyncCall(task,parameters) | Core.asyncCall(task,parameters) | ||
− | </ | + | </syntaxhighlight> |
Background threads are only executed when the main thread is not running. | Background threads are only executed when the main thread is not running. | ||
Line 14: | Line 15: | ||
'''parameters''': (multiple) multiple parameters to pass to function '''optional'''<br/> | '''parameters''': (multiple) multiple parameters to pass to function '''optional'''<br/> | ||
− | === | + | === Examples === |
− | < | + | <syntaxhighlight lang="lua"> |
+ | local txt1_noads = TextField.new(nil, "no ads") | ||
+ | local txt2_plusincome = TextField.new(nil, "plus income") | ||
+ | local btn_OK = TextField.new(nil, "OK") | ||
+ | -- position | ||
+ | txt1_noads:setPosition(64, 64*1) | ||
+ | txt2_plusincome:setPosition(64, 64*3) | ||
+ | btn_OK:setPosition(64, 64*5) | ||
+ | -- scale | ||
+ | local FontScale = 4 | ||
+ | local tempFontScale = 8 | ||
+ | txt1_noads:setScale(FontScale) | ||
+ | txt2_plusincome:setScale(FontScale) | ||
+ | btn_OK:setScale(FontScale) | ||
+ | -- order | ||
+ | stage:addChild(txt1_noads) | ||
+ | stage:addChild(txt2_plusincome) | ||
+ | stage:addChild(btn_OK) | ||
+ | |||
local function scaleTextsAndBtn() | local function scaleTextsAndBtn() | ||
− | + | Core.yield(2) | |
− | |||
− | Core.yield( | ||
txt1_noads:setScale(tempFontScale) | txt1_noads:setScale(tempFontScale) | ||
− | Core.yield( | + | Core.yield(1) |
− | txt1_noads:setScale( | + | txt1_noads:setScale(FontScale) |
+ | Core.yield(1) | ||
txt2_plusincome:setScale(tempFontScale) | txt2_plusincome:setScale(tempFontScale) | ||
− | Core.yield( | + | Core.yield(1) |
− | txt2_plusincome:setScale( | + | txt2_plusincome:setScale(FontScale) |
− | Core.yield( | + | Core.yield(1) |
− | btn_OK:setScale( | + | btn_OK:setScale(tempFontScale) |
− | Core.yield(. | + | Core.yield(0.5) |
− | btn_OK:setScale( | + | btn_OK:setScale(FontScale) |
end | end | ||
Core.asyncCall(scaleTextsAndBtn) | Core.asyncCall(scaleTextsAndBtn) | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | '''asyncCall used in a Class and with parameters''' | ||
+ | <syntaxhighlight lang="lua"> | ||
+ | if self.imgui:button("VALIDATE") then | ||
+ | -- self:gotoScene("levelX") | ||
+ | Core.asyncCall(LevelX.gotoScene, self, "levelX") -- or self.gotoScene, ... | ||
+ | end | ||
+ | ... | ||
+ | |||
+ | -- change scene | ||
+ | function LevelX:gotoScene(xscene) | ||
+ | scenemanager:changeScene( | ||
+ | xscene, 1, | ||
+ | transitions[math.random(1, #transitions)], | ||
+ | easings[math.random(1, #easings)] | ||
+ | ) | ||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === See also === | ||
+ | '''[[Core.yield]]''' | ||
{{Core}} | {{Core}} |
Latest revision as of 09:04, 11 November 2024
Available since: Gideros 2016.06
Class: Core
Description
Launches a function on a separate thread as a background task.
Core.asyncCall(task,parameters)
Background threads are only executed when the main thread is not running.
Parameters
task: (function) function to run in background
parameters: (multiple) multiple parameters to pass to function optional
Examples
local txt1_noads = TextField.new(nil, "no ads")
local txt2_plusincome = TextField.new(nil, "plus income")
local btn_OK = TextField.new(nil, "OK")
-- position
txt1_noads:setPosition(64, 64*1)
txt2_plusincome:setPosition(64, 64*3)
btn_OK:setPosition(64, 64*5)
-- scale
local FontScale = 4
local tempFontScale = 8
txt1_noads:setScale(FontScale)
txt2_plusincome:setScale(FontScale)
btn_OK:setScale(FontScale)
-- order
stage:addChild(txt1_noads)
stage:addChild(txt2_plusincome)
stage:addChild(btn_OK)
local function scaleTextsAndBtn()
Core.yield(2)
txt1_noads:setScale(tempFontScale)
Core.yield(1)
txt1_noads:setScale(FontScale)
Core.yield(1)
txt2_plusincome:setScale(tempFontScale)
Core.yield(1)
txt2_plusincome:setScale(FontScale)
Core.yield(1)
btn_OK:setScale(tempFontScale)
Core.yield(0.5)
btn_OK:setScale(FontScale)
end
Core.asyncCall(scaleTextsAndBtn)
asyncCall used in a Class and with parameters
if self.imgui:button("VALIDATE") then
-- self:gotoScene("levelX")
Core.asyncCall(LevelX.gotoScene, self, "levelX") -- or self.gotoScene, ...
end
...
-- change scene
function LevelX:gotoScene(xscene)
scenemanager:changeScene(
xscene, 1,
transitions[math.random(1, #transitions)],
easings[math.random(1, #easings)]
)
end
See also