我想对Label
中的表格libGDX
进行不同的操作。
在我的Table
课程中,我创建了一个Label
和scale\move\rotate
,我每次操作完成时都会尝试调用此操作,因此每次都会运行在不同的字符串上,但我因为每次都打电话给我自己而崩溃了(我想)。
a= new Label("", mLabelStyleAmount);
addActor(a); // in a Table class
action = Actions.run(new Runnable() {
@Override
public void run() {
lunchText(i);
}
});
private void lunchText (int i) {
a.setText(strings[i]);
ScaleToAction up = Actions.scaleBy(30, 20, 5)
a.setPosition(a.getWidth() * 0.2f, 50);
a.addAction(Actions.sequence(up, action));
i++;
}
这是每次我完成时调用相同方法的正确方法吗?
答案 0 :(得分:0)
您遇到的例外情况是由action
触发的方法中添加action
引起的无限重复引起的。这意味着每次向行动中添加action
时,都会再次添加action
,依此类推......
第二件事是,当您使用addAction
方法添加许多操作时,这些操作并行而非顺序!
决议是使用libGDX SequenceAction
并在开头生成所有action
。它应该像:
SequenceAction sequence = Actions.sequence();
for(int i = 0; i < string.length; i++) {
sequence.addAction(Actions.run(new Runnable() {
@Override
public void run() {
a.setText(strings[i]);
a.setPosition(a.getWidth() * 0.2f, 50);
}
}, Actions.scaleBy(30, 20, 5)));
另一种方法是检查render()
方法,如果a
没有任何操作(表示上次操作已完成),然后添加新操作
//render()
if(a.getActions.size == 0)
addActionToA();