Arma 3 Scripting

Command in GUI Control - Positioning

ctrlSetPosition

Also available as Markdown and JSON, or read the original wiki page.

Description

Sets wanted position and size for 2D control animation. Width and height are optional. ctrlCommit is required to complete the operation. For 3D control, param is relative [x, z, y] and no ctrlCommit is required as it cannot be animated. If target control is inside a CT_CONTROLS_GROUP, the position needs to be relative to it.

Important

This command doesn't work well with CT_MAP control. Use ctrlMapSetPosition instead.

Syntax

Syntax 1

controlName ctrlSetPosition [x, y]

Parameters:

Returns: Nothing

Syntax 2

controlName ctrlSetPosition [x, y, w, h]

Parameters:

Returns: Nothing

Syntax 3

controlName ctrlSetPosition [x, z, y]

Parameters:

Returns: Nothing

Examples

Example 1

Move control:

_control2D ctrlSetPosition [0, 0];
_control2D ctrlCommit 0;

Example 2

Move control and resize:

_control2D ctrlSetPosition [0, 0, 1, 1];
_control2D ctrlCommit 0;

Example 3

_control3D ctrlSetPosition [0.5, 1, 0.5]; //centered and 1m away from screen

Example 4

Typewriter effect:

with uiNamespace do
{
    0 spawn
    {
        _text1 = "This is a simple demo of typewriter text effect with various speed.";
        _text2 = "This took 10 seconds.";
        _text3 = "This is a fast one, set for 2 seconds.";

        ctrl = findDisplay 46 ctrlCreate ["RscStructuredText", -1];

        ctrl ctrlSetPosition [0, 0, 0, 0.1];
        ctrl ctrlCommit 0;
        ctrl ctrlSetStructuredText parseText format ["<t color='#ff0000' size='2.1'>%1</t>", _text1 splitString " " joinString " "];
        ctrl ctrlSetPosition [0, 0, ctrlTextWidth ctrl, 0.1];
        ctrl ctrlCommit 8;

        waitUntil { ctrlCommitted ctrl };
        sleep 0.5;

        ctrl ctrlSetPosition [0,0,0,0.1];
        ctrl ctrlCommit 0;
        ctrl ctrlSetStructuredText parseText format ["<t color='#ff0000' size='2.1'>%1</t>", _text2 splitString " " joinString " "];
        ctrl ctrlSetPosition [0, 0, ctrlTextWidth ctrl, 0.1];
        ctrl ctrlCommit 2;

        waitUntil { ctrlCommitted ctrl };
        sleep 2;

        ctrl ctrlSetPosition [0,0,0,0.1];
        ctrl ctrlCommit 0;
        ctrl ctrlSetStructuredText parseText format ["<t color='#00ff00' size='2.1'>%1</t>", _text3 splitString " " joinString " "];
        ctrl ctrlSetPosition [0,0,ctrlTextWidth ctrl,0.1];
        ctrl ctrlCommit 2;

        waitUntil { ctrlCommitted ctrl };
        sleep 2;

        ctrlDelete ctrl;
    };
};

See also

ctrlMapSetPosition · ctrlCommit · ctrlCreate · ctrlDelete · ctrlModel · ctrlSetModel · ctrlPosition · ctrlClassName · displayCtrl · ctrlModelScale · ctrlSetModelScale · ctrlModelDirAndUp · ctrlSetModelDirAndUp

Community notes

Yuval

If the target control is a controls' group, all the child controls of that group will be moved automatically (as their position is relative to the control group rather than the display).