onEachFrame: Difference between revisions
Jump to navigation
Jump to search
m (Replaced <code> with <sqf>) |
No edit summary |
||
Line 47: | Line 47: | ||
|seealso= [[diag_frameNo]] [[diag_fps]] | |seealso= [[diag_frameNo]] [[diag_fps]] | ||
}} | |||
{{Note | |||
|user= PierreMGI | |||
|timestamp= 20230105073215 | |||
|text= There is a way for running a code, more or less each second instead of each frame, very similar (but not equivalent) to a lazy loop. | |||
<sqf>onEachFrame { if (diag_frameNo mod 60 isEqualTo 0) then {<your code>} };</sqf> | |||
or in its stackable version: | |||
<sqf>addMissionEventHandler ["EachFrame", {if (diag_frameNo mod 60 isEqualTo 0 then {<your code>}}];</sqf> | |||
At 60 FPS, this code will run each second. Less often if FPS falls, more often at higher FPS. | |||
The code stays in unscheduled EH scope. | |||
}} | }} |
Revision as of 08:32, 5 January 2023
Description
- Description:
- Runs given statement every frame.
- Groups:
- Event Handlers
Syntax
- Syntax:
- onEachFrame statement
- Parameters:
- statement: String or Code
- Return Value:
- Nothing
Examples
- Example 1:
- Example 2:
- Private variables defined outside of the onEachFrame scope are not inherited:
_myvar = "bob"; myvar = "bill"; onEachFrame { hintSilent str [_myvar, myvar]; }; // Result: [any, "bill"]
- Example 3:
- Only one onEachFrame loop can exist at any time:
Note how "first" never gets shown even though it precedes "second". This is because script thread is executing within the same frame and first onEachFrame is overwritten before it has a chance to execute its statement.
- Example 4:
- Script suspension is not permitted within onEachFrame scope:
- Example 5:
- onEachFrame {}; // Reset event
Additional Information
- See also:
- diag_frameNo diag_fps
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
- Posted on Jan 05, 2023 - 07:32 (UTC)
-
There is a way for running a code, more or less each second instead of each frame, very similar (but not equivalent) to a lazy loop.
or in its stackable version:
At 60 FPS, this code will run each second. Less often if FPS falls, more often at higher FPS. The code stays in unscheduled EH scope.