Name: alwaysBuffer

Type: property

Syntax: set the alwaysBuffer of {<stack> | <image> | <player>} to {true | false}

Summary:
Determines whether the contents of windows, <player|players>, and
<image|images> are <buffer|buffered> offscreen.

Associations: image

Introduced: 1.0

OS: mac, linux, ios, android, windows

Platforms: desktop, server, mobile

Example:
set the alwaysBuffer of this stack to true

Example:
set the alwaysBuffer of image "Smile" to false

Example:
set the alwaysBuffer of the templatePlayer to true

Value (bool):
The <alwaysBuffer> of an <object(glossary)> is true or false. By
<default>, the <alwaysBuffer> <property> of newly created
<image|images>, <player|players>, and <stack|stacks> is set to false.

Description:
Use the <alwaysBuffer> <property> to eliminate unwanted flicker when
<object(glossary)|objects> are being <redraw|redrawn>. This <property>
is especially useful for eliminating flicker when using animation in a
<stack>. 

Prior to 2.7, setting the <alwaysBuffer> of a <stack> to true would
cause the <stack|stack's> display to be double-buffered, eliminating
flicker. However, 2.7 introduced a new rendering model which
double-buffers a <stack|stack's> contents as and when required. As a
result, setting the <alwaysBuffer> of a <stack> no longer has any
effect. 

Setting an <image|image's> <alwaysBuffer> <property> to true forces the
<image> to <uncompress> immediately, even if the <image> is hidden. This
speeds up using the <show> <command> to display an <image>. Setting the
<alwaysBuffer> <property> of all <image|images> to true is equivalent to
setting the <global> <bufferHiddenImages> <property> to true.

Setting a <player|player's> <alwaysBuffer> <property> to true forces the
movie to be drawn in an offscreen <buffer>. This prevents the movie from
flickering when other <object|objects> (such as <button|buttons>) are
drawn on top of it. It also allows the current frame to be seen when the
<card> is printed.

If a <player|player's> movie contains only sound with no visual track,
the setting of its <alwaysBuffer> <property> has no effect. If a
<player|player's> <alwaysBuffer> is false, the movie it contains is
drawn in front of all <object(glossary)|objects>. The <visual effect>
<command> does not affect the screen area inside the <rectangle> of a
<player> whose <alwaysBuffer> is false. If a <player|player's>
<alwaysBuffer> is true, it cannot be controlled with the <controller
bar> and must be operated by <script> control.

>*Note:* Setting a <player|player's> <alwaysBuffer> to true always
> increases memory usage, and may make movie playing more jerky.

Changes:
This property was removed from the Windows platform in version 8.1.0, 
due to the change of player implementation from QuickTime to DirectShow.

References: visual effect (command), show (command),
lock screen (command), global (command), heapSpace (function),
stacks (function), hasMemory (function), default (glossary),
rectangle (glossary), object (glossary), property (glossary),
uncompress (glossary), controller bar (glossary), buffer (glossary),
command (glossary), redraw (glossary), control (keyword), card (object),
button (object), image (object), player (object), stack (object),
screenSharedMemory (property), dontUseQT (property), script (property),
constantMask (property), bufferHiddenImages (property)

Tags: multimedia

