# Quick Introduction: Flash UILoader and UIScrollbar Components

##### Tutorial Details
• Difficulty: Beginner
• Platform: Flash
• Language: AS3
• Software used: Flash Professional CS5
• Estimated Completion Time: 30 mins
This entry is part 7 of 8 in the series Flash Components

In this Quick Introduction to the Flash Professional Components, we’re going to look at the UILoader and UIScrollbar.

## Brief Overview

Take a look at the preview. In the SWF, on the left side there is a UILoader component which is invisible upon first glance (because there is nothing in it); we will be loading an image into this.

The button below the label is used to start the loading of the image. On the right-hand side there is a text field and UIScrollbar which are initially invisible (the text field is invisible because there is nothing in it); upon pressing the button with the label “Load Text” we load the text from a sample text file and set the UIScrollbar to be visible.

## Step 1: Setting Up the Document

Open a new Flash Document and set the following properties:

• Document Size: 550x260px
• Background Color: #FFFFFF

## Step 2: Add Components to the Stage

Open the components window by going to Menu > Window > Components or pressing CTRL+F7.

Drag a UILoader, a Label, two Buttons, and a UIScrollbar to the stage.

In the Properties panel give the UILoader the instance name “imageLoader”. If the Properties panel is not showing go to Menu > Window > Properties or press CTRL+F3.

Set the UILoader’s X position to 37 and its Y to 20

Give the label the instance name “loadedLabel”. Set the label’s X to 37 and its Y to 182.

Give the first button the instance name “loadImageButton” and set the label’s X to 37, its Y to 213.

In the Tools panel select the Text tool and drag out a TextField on the stage. If the Tools panel is not showing go to Menu > Window > Tools or press CTRL+F2.

Give the TextField the instance name “loremText”. Set the TextField’s X to 272 and its Y to 15, then set its width to 243, its height to 101.

Give the UIScrollbar the instance name “textScroller”. Set the UIScrollbar’s X to 525.00 and its Y to 15

Give the second Button the instance name “loadTextButton” and set its X to 272, its Y to 213.

### Explaining the Components

The UILoader component is a container which can display SWF, JPEG, progressive JPEG, PNG, and GIF files.You can load in these assets at runtime and optionally monitor the loading progress. To see how this can be done, check out my tutorial on the ProgressBar component (the concepts are the same) and apply to the UILoader as I did with the Loader in that tutorial.

The UIScrollbar allows you to add a scrollbar to a textField. When you have a long block of text the UIScrollbar component allows you to scroll through without having a very large TextField to accommodate all your text. This component is very easy to use in that you can just drop it onto a TextField and it automatically “wires up” to that TextField. Here, I’ll show you how to do it in ActionScript.

## Step 3: Preparing the AS File

Create a new ActionScript file and give it the name Main.as.

We will be declaring our components in Main.as so we need to turn off “auto declare stage instances”; the benefit of doing this is that you get code hinting for the instance when using Flash’s code editor. To do this go to Menu > File > Publish Settings and click on Settings, next to Script [Actionscript 3.0].

Uncheck “Automatically declare stage instances”.

In Main.as, open the package declaration and import the classes we will be using. Add the following to Main.as:

package  {

//We will extend the class of MovieClip
import flash.display.MovieClip;

//Import the components we will be using
import fl.controls.Button;
import fl.controls.Label;
import fl.controls.UIScrollbar;

//Needed for our Event Handlers
import flash.events.MouseEvent;
import flash.events.Event;

//Needed to Loaded images and Text
import flash.net.URLRequest;
import flash.text.TextField;



## Step 4: Set Up the Main Class

Add the class, make it extend Movie Clip, and set up our Constructor Function.

Here we declare our variables and call our functions in the Main() constructor. Add the following to Main.as:

public class Main extends MovieClip {

//Our on-stage components
public var loremText:TextField;
public var textScroller:UIScrollbar;

//Used to load the Text into the TextField

public function Main() {
setupButtonsAndLabels();
setupTextField();
setupScrollBar();

}


## Step 5: Main Constructor Functions

Here we’ll define the functions that are used in our constructor. In the setupButtonAndLabels() function we set our button’s label property and add event listeners to be triggered when the user clicks the button.

In the setupTextField() function we set the text field’s wordWrap property to true so the text will wrap to the next line when it reaches the right edge of the TextField.

In setupScrollBar() we set the UIScrollbar’s direction to “vertical” (this can be “vertical” or “horizontal”) and, since we don’t want it visible when the movie first starts, we set its visible property to false.

private function setupButtonsAndLabels():void {
//Sets the buttons Label(Text shown on Button)
//Sets the buttons Label(Text shown on Button)
//Sets the labels text
}
private function setupTextField():void {
//Lines will wrap when they reach end(right side) of textfield
loremText.wordWrap = true;
}

private function setupScrollBar():void {
//Sets our scrollBars direction; can be "vertical" or "horizontal"
textScroller.direction="vertical";
textScroller.visible = false;
}



## Step 6: Event Listeners

Here we’ll code the event listeners we added to the buttons and then close out the class and package.

In the loadImage() function we set the scaleContent of the imageLoader to false (if it were true the image would scale down to the size of the UILoader), as we want the image to be its normal size. We then load the image and add an event listener to be triggered when the image has completed loading.

In the loadText() function we set up our URLLoader and load the text file. Here we also set up a listener to be triggered when the text has finished loading.

In the imageLoaded() function we set the label’s text to “Image Loaded” — a simple example, but you could do something less trivial in a “real” application.

In the textLoaded() function we set the text field’s text to the Event’s (e.target.data), which will be the text from the text file. We then set the UIScrollbar to be visible and set its scrollTarget (the text field we wish it to control).

		private function loadImage(e:MouseEvent):void{
//If were set to true the image would scale down to the size of the UILoader
//Here we set to false so the UILoader respects the actual image size
}

}
//Sets the text on the label
}
//Sets the TextField to the loaders data(the text in the textfile)
loremText.text=e.target.data;
textScroller.visible = true;
textScroller.scrollTarget = loremText;

}
}//close out the class

}close out the package


Note that at the end we close out the class and package.

## Conclusion

You’ll notice in the Components Parameters panel of the components that you can check and select certain properties.

The above image is for the UILoader component.

The properties for the UILoader component are as follows:

• autoLoad: a Boolean value that indicates to automatically load the specified content
• enabled: a Boolean value that indicates the whether the component can accept user input
• maintainAspectRatio: a Boolean value a value that indicates whether to maintain the aspect ratio that was used in the original image or to
resize the image to the current width and height of the UILoader component
• scaleContent: a Boolean value that indicates whether to automatically scale the image to the size of the UILoader instance
• source: an absolute or relative URL that identifies the location of the content to load
• visible: a Boolean value that indicates whether or not the component is visible on the stage

The properties for the UIScrollbar are

• direction: sets the direction of the scrollBar (can be “vertical” or “horizontal”)
• scrollTargetName: the target TextField to which the UIScrollbar is registered
• visible: a Boolean value that indicates whether or not the component is visible on the stage

To learn more about the properties for Labels and Button be sure to check out the Quick Introduction to the Button and Label components.