In this example, a single sentence is broken into several 'phrases', separated in individual attributes. Each phrase is displayed individually. The displayed phrase is called the 'active' phrase. The other phrases are represented by dashes when they are not active.
Two arrays are created - one to store each phrase of the sentence, and another to store the 'masked' version of each phrase. In this sample, the 'mask' consists of a series of dashes equaling the length of the actual phrase. This can be easily changed to use the mask of your choice, or to use a constant mask (i.e., to hide the length of the phrases before the subject sees them). Once the phrases and masks have been loaded, a few conditions are checked.
To account for longer sentences, the phrase for which a hard return will be used is specified using an attribute. If a phrase is specified, a hard return is added to the specified phrase and its mask. Additionally, for sentences with shorter phrases, an 'x' in specified for the empty phrases, which are skipped using a GoTo statement and a Label object.
Once these conditions are accounted for, each TextDisplay object is assigned text via the .Text property, which is then presented to the subject.