PennController for IBEX › Forums › Support › Multiple use of the same object › Reply To: Multiple use of the same object
June 19, 2023 at 11:20 am
#10693
Keymaster
Hello Christin,
There is a method to set the text of a Text element: .text
Here is an illustration of what I think you are trying to achieve:
TEXTS = [
null, // index 0, unused
(m,l)=>`Der ${m} hat eine Leistung von ${l} PS`, // index 1
(m,l)=>` er hat eine Leistung von ${l} PS.`, // index 2
(m,l)=>` test ${l} test2 ${m}.`, // index 3
// etc.
]
Tempalte( variable =>
newTrial(
newButton("PS") // create this button now (don't apply the defaultButton below to this button)
,
// I just use these two buttons for testing purposes
newButton("Next text").callback( getVar("nr").set(v=>v+1) ),
newButton("Switch side").callback( getVar("side").set(d=>d=="left"?"right":"left") )
,
newVar("side", "left"), // which side to print the text
newVar("nr", 1), // which text to print (will look up TEXTS using the value)
newVar("canvasnr",1) // which canvas to print on
,
defaultCanvas.css( "border" , "solid 1px black" ).print() // add a border a print all the canvases created below
,
defaultButton.callback( getVar("canvasnr").set(v=>v+1) ) // increment canvasnr upon click on the buttons created below
,
newCanvas("canvas1", 780, 20) // this button will make canvas2 visible
.add("right at 100%", "middle at 50%", newButton("+1").callback(getCanvas("canvas2").visible(),self.remove()) )
.add(0, "middle at 50%", newText("left1",""))
.add("right at 90%", "middle at 50%", newText("right1",""))
,
defaultCanvas.hidden() // hide all the canvases created below
,
newCanvas("canvas2", 780, 20) // this button will make canvas3 visible
.add("right at 100%", "middle at 50%", newButton("+2").callback(getCanvas("canvas3").visible(),self.remove()) )
.add(0, "middle at 50%", newText("left2",""))
.add("right at 90%", "middle at 50%", newText("right2",""))
,
newCanvas("canvas3", 780, 20)
.add("right at 100%", "middle at 50%", newButton("+3").callback(getCanvas("canvas4").visible(),self.remove()) )
.add(0, "middle at 50%", newText("left3",""))
.add("right at 90%", "middle at 50%", newText("right3",""))
,
newCanvas("canvas4", 780, 20)
// etc.
,
getButton("PS")
.callback(
// Create a Var element whose text content is fetched from TEXTS, based on the index in nr
newVar("txt").set(getVar("nr")).set(n=>TEXTS[n](variable.model,variable.LeistungPS))
,
getVar("side").test.is("left").success(
// left
getVar("canvasnr")
.test.is(1).success( getText("left1").text(getVar("txt")) )
.test.is(2).success( getText("left2").text(getVar("txt")) )
.test.is(3).success( getText("left3").text(getVar("txt")) )
// etc.
).failure(
// right
getVar("canvasnr")
.test.is(1).success( getText("right1").text(getVar("txt")) )
.test.is(2).success( getText("right2").text(getVar("txt")) )
.test.is(3).success( getText("right3").text(getVar("txt")) )
// etc.
)
)
.center()
.print()
,
// etc.
getButton("Next text").center().print(),getButton("Switch side").center().print()
,
newKey(" ").wait()
)
)
Jeremy