onEachFrame: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
(Undo revision 155024 by Ilias38rus (talk) Not true, it triggers on the next frame)
Tag: Undo
(19 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{Command|Comments=
____________________________________________________________________________________________
____________________________________________________________________________________________


| arma2oa |= Game name
| arma2oa |Game name=


|1.63|= Game version
|1.63|Game version=
____________________________________________________________________________________________
____________________________________________________________________________________________


| Statement is run every frame. {{Feature arma3|In order to keep compatability between official and community content the functions [[BIS_fnc_addStackedEventHandler]] and [[BIS_fnc_removeStackedEventHandler]] should be used instead.}} |= Description
| Runs given statement every frame.
{{Feature arma3 |
In order to keep compatibility between official and community content:
* Since {{arma3}} v1.57 a stackable version of this EH is available: [[Arma_3:_Event_Handlers/addMissionEventHandler#EachFrame|EachFrame Mission Event Handler]]
* Before that, the scripted version of the event handler should be used instead (using [[BIS_fnc_addStackedEventHandler]] and [[BIS_fnc_removeStackedEventHandler]]).}} |DESCRIPTION=
____________________________________________________________________________________________
____________________________________________________________________________________________


| '''onEachFrame''' statement |= Syntax
| [[onEachFrame]] statement |SYNTAX=


|p1= statement: [[Code]] |= Parameter 1
|p1= statement: [[String]] or [[Code]] |PARAMETER1=


| [[Nothing]] |= Return value
| [[Nothing]] |RETURNVALUE=


| [[diag_frameNo]], [[diag_fps]] |SEEALSO=
____________________________________________________________________________________________
____________________________________________________________________________________________


|x1= <code>onEachFrame { hintSilent str position player; }; //Hints position every frame</code> |= Example 1
|x1= <code>[[onEachFrame]] { [[hintSilent]] [[str]] [[position]] [[player]]}; {{cc|Hints position every frame}}</code> |EXAMPLE1=
|x2= Private variables defined outside of [[onEachFrame]] scope are not inherited:
 
|x2= Private variables defined outside of the [[onEachFrame]] scope are not inherited:
<code>_myvar = "bob";
<code>_myvar = "bob";
myvar = "bill";
myvar = "bill";
[[onEachFrame]] {
[[onEachFrame]] { [[hintSilent]] [[str]] [_myvar, myvar]; };
[[hintSilent]] [[str]] [_myvar, myvar]  
{{cc|Result: [any,"bill"]}}</code>
};
|EXAMPLE2=
//Result: [any,"bill"]</code>
 
|= Example 2
|x3= Only one [[onEachFrame]] loop can exist at any time:
|x3= Only one [[onEachFrame]] loop can exist at any time:
<code>[[onEachFrame]] {
<code>[[onEachFrame]] { [[player]] [[sideChat]] "first"; };
[[player]] [[sideChat]] "first";
[[onEachFrame]] { [[player]] [[sideChat]] "second"; };
};
{{cc|Result: "second", "second", "second"...}}</code>
[[onEachFrame]] {
[[player]] [[sideChat]] "second";
};
//Result: "second","second","second"..."second"</code>


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 3
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. |EXAMPLE3=
|x4= Script suspension is not permitted within [[onEachFrame]] scope:
|x4= Script suspension is not permitted within [[onEachFrame]] scope:
<code>[[onEachFrame]] {
<code>{{cc|Will throw an error}}
[[sleep]] 1
[[onEachFrame]] { [[sleep]] 1; };</code> |EXAMPLE4=
};
 
//ERROR!!!</code> |= Example 4
|x5= <code>[[onEachFrame]] {}; {{cc|Reset event}}</code> |EXAMPLE5=
}}
}}


Line 48: Line 49:
<!-- Note Section BEGIN -->
<!-- Note Section BEGIN -->


<dd class="notedate">Posted on 21 Dec, 2012
<dt class="note">[[User:neokika|neokika]]<dd class="note">
<code>onEachFrame {}; //Reset event</code>
<!-- Note Section END -->
<!-- Note Section END -->
</dl>
</dl>
<h3 style="display:none">Bottom Section</h3>
<h3 style="display:none">Bottom Section</h3>


[[Category:ArmA 2 OA: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]

Revision as of 11:14, 3 July 2020

Hover & click on the images for description

Description

Description:
Runs given statement every frame. Template:Feature arma3
Groups:
Uncategorised

Syntax

Syntax:
onEachFrame statement
Parameters:
statement: String or Code
Return Value:
Nothing

Examples

Example 1:
onEachFrame { hintSilent str position player}; // Hints position every frame
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: onEachFrame { player sideChat "first"; }; onEachFrame { player sideChat "second"; }; // Result: "second", "second", "second"... 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: // Will throw an error onEachFrame { sleep 1; };
Example 5:
onEachFrame {}; // Reset event

Additional Information

See also:
diag_frameNodiag_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

Notes

Bottom Section