| 
  
           
            ProgressBar 组件用于显示内容加载进度,这在内容较大而导致应用程序执行延迟时可消除用户的疑虑。ProgressBar 对于显示图像和部分应用程序的加载进度非常有用。加载进程可以是确定的也可以是不确定的。当要加载的内容量已知时,请使用
            
             确定的
            
            进度栏。确定的进度栏是一段时间内任务进度的线性表示。当要加载的内容量是未知时,请使用
            
             不确定的
            
            进度栏。还可以添加 Label 组件,以将加载进度显示为百分比。
            
            ProgressBar 组件使用 9 切片缩放,并具有条形外观、轨道外观和不确定外观。
            
           
            
           
           
            与 ProgressBar 组件的用户交互
           
            
             可以采用三种模式来使用 ProgressBar 组件。最常用的模式是事件模式和轮询模式。这两种模式指定一个发出
             
              progress
             
             和
             
              complete
             
             事件(事件模式和轮询模式)或公开
             
              bytesLoaded
             
             和
             
              bytesTotal
             
             属性(轮询模式)的加载进程。还可以在手动模式下使用 ProgressBar 组件,方法是:设置
             
              maximum
             
             、
             
              minimum
             
             和
             
              value
             
             属性,并调用
             
              ProgressBar.setProgress()
             
             方法。可以设置不确定的属性,以指示 ProgressBar 是用条纹图案填充并且源的大小未知 (
             
              true
             
             ),还是纯色填充并且源的大小已知 (
             
              false
             
             )。
             
             ProgressBar 的模式是通过设置其
             
              mode
             
             属性设置的,具体方法为:在“属性”检查器或“组件”检查器中设置
             
              mode
             
             参数,或使用 ActionScript。
             
             使用 ProgressBar 显示处理状态(如正在分析 100,000 项)时,如果它处于单个帧循环中,则屏幕将不会重绘,因而看不到进度栏的更新。
             
           
            
           
           
            创建具有 ProgressBar 的应用程序
           
            
             下面的过程展示了如何在创作时将 ProgressBar 组件添加到应用程序。在此示例中,此 ProgressBar 使用事件模式。在事件模式下,加载的内容发出
             
              progress
             
             和
             
              complete
             
             事件,ProgressBar 调度这两个事件来显示进度。当发生
             
              progress
             
             事件时,该示例将更新标签以显示已加载内容的百分比。当发生
             
              complete
             
             事件时,该示例将显示“Loading complete”以及
             
              bytesTotal
             
             属性的值,该属性值为文件的大小。
             
             
              
               创建一个新的 Flash (ActionScript 3.0) 文档。
              
              
               将 ProgressBar 组件从“组件”面板拖到舞台上。
               
               
                
                 在“属性”检查器中,输入实例名称
                 
                  aPb
                 
                 。
                
                
                 在“参数”部分中,输入
                 
                  200
                 
                 作为 X 值。
                
                
                 输入
                 
                  260
                 
                 作为 Y 值。
                
                
                 选择
                 
                  event
                 
                 作为
                 
                  mode
                 
                 参数。
                
              
               将 Button 组件从“组件”面板拖到舞台中。
              
              
               将一个 Label 组件拖到舞台上,然后为其指定实例名称
               
                progLabel
               
               。
               
               
                
                 输入
                 
                  150
                 
                 作为 W 值。
                
                
                 输入
                 
                  200
                 
                 作为 X 参数。
                
                
                 输入
                 
                  230
                 
                 作为 Y 参数。
                
                
                 在“参数”部分中,清除
                 
                  text
                 
                 参数的值。
                
              
               打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码,此代码用于加载一个 mp3 音频文件:
               import fl.controls.ProgressBar; 
import flash.events.ProgressEvent; 
import flash.events.IOErrorEvent; 
 
var aSound:Sound = new Sound(); 
aPb.source = aSound; 
var url:String = "http://www.helpexamples.com/flash/sound/song1.mp3"; 
var request:URLRequest = new URLRequest(url); 
 
aPb.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
aPb.addEventListener(Event.COMPLETE, completeHandler); 
aSound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
loadButton.addEventListener(MouseEvent.CLICK, clickHandler); 
 
function progressHandler(event:ProgressEvent):void { 
        progLabel.text = ("Sound loading ... " + aPb.percentComplete); 
} 
 
function completeHandler(event:Event):void { 
    trace("Loading complete"); 
    trace("Size of file: " + aSound.bytesTotal); 
    aSound.close(); 
    loadButton.enabled = false; 
} 
 
function clickHandler(event:MouseEvent) {         
    aSound.load(request); 
} 
 
function ioErrorHandler(event:IOErrorEvent):void { 
    trace("Load failed due to: " + event.text); 
}
              
               选择“控制”>“测试影片”。
               
             
              
             
             
              在轮询模式下创建带有 ProgressBar 组件的应用程序
             
              下面的示例将 ProgressBar 设置为轮询模式。在轮询模式下,进度的确定方式为:侦听正在加载的内容上的
              
               progress
              
              事件并使用其
              
               bytesLoaded
              
              和
              
               bytesTotal
              
              属性计算进度。此示例加载一个 Sound 对象,侦听其
              
               progress
              
              事件,并使用其
              
               bytesLoaded
              
              和
              
               bytesTotal
              
              属性计算加载百分比。它将加载百分比同时显示在标签和“输出”面板中。
              
              
               
                创建一个新的 Flash (ActionScript 3.0) 文档。
               
               
                将一个 ProgressBar 组件从“组件”面板拖到舞台上,并在“属性”检查器中输入以下值:
                
                
                 
                  输入
                  
                   aPb
                  
                  作为实例名称。
                 
                 
                  输入
                  
                   185
                  
                  作为 X 值。
                 
                 
                  输入
                  
                   225
                  
                  作为 Y 值。
                 
               
                将一个 Label 组件拖到舞台上,并在“属性”检查器中输入以下值:
                
                
                 
                  输入
                  
                   progLabel
                  
                  作为实例名称。
                 
                 
                  输入
                  
                   180
                  
                  作为 X 值。
                 
                 
                  输入
                  
                   180
                  
                  作为 Y 值。
                 
                 
                  在“参数”部分中,清除 text 参数的值。
                 
               
                打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下 ActionScript 代码,此代码创建一个 Sound 对象 (
                
                 aSound
                
                ) 并调用
                
                 loadSound()
                
                将声音加载到此 Sound 对象中:
                import fl.controls.ProgressBarMode; 
import flash.events.ProgressEvent; 
import flash.media.Sound; 
 
var aSound:Sound = new Sound(); 
var url:String = "http://www.helpexamples.com/flash/sound/song1.mp3"; 
var request:URLRequest = new URLRequest(url); 
 
aPb.mode = ProgressBarMode.POLLED; 
aPb.source = aSound; 
aSound.addEventListener(ProgressEvent.PROGRESS, loadListener); 
 
aSound.load(request); 
 
function loadListener(event:ProgressEvent) { 
    var percentLoaded:int = event.target.bytesLoaded / event.target.bytesTotal * 100; 
    progLabel.text = "Percent loaded: " + percentLoaded + "%"; 
    trace("Percent loaded: " + percentLoaded + "%"); 
}
               
                选择“控制”>“测试影片”以运行此应用程序。
                
             
              
             
             
              在手动模式下创建带有 ProgressBar 组件的应用程序
             
              下面的示例将 ProgressBar 设置为手动模式。在手动模式下,必须通过调用
              
               setProgress()
              
              方法来手动设置进度,并为其提供当前值和最大值来确定进度。在手动模式下不需要设置
              
               source
              
              属性。该示例使用一个最大值为 250 的 NumericStepper 组件来逐渐增加 ProgressBar 中的进度。当 NumericStepper 中的值发生变化,从而触发
              
               CHANGE
              
              事件时,事件处理函数 (
              
               nsChangeHander
              
              ) 将调用
              
               setProgress()
              
              方法来推进 ProgressBar。它还显示已完成进度相对于最大值的百分比。
              
              
               
                创建一个新的 Flash (ActionScript 3.0) 文档。
               
               
                将 ProgressBar 组件从“组件”面板拖到舞台上,并在“属性”检查器中为其指定以下值:
                
                
                 
                  输入
                  
                   aPb
                  
                  作为实例名称。
                 
                 
                  输入
                  
                   180
                  
                  作为 X 值。
                 
                 
                  输入
                  
                   175
                  
                  作为 Y 值。
                 
               
                将一个 NumericStepper 组件拖到舞台上,并在“属性”检查器中输入以下值:
               
               
                将一个 Label 组件拖到舞台上,并在“属性”检查器中输入以下值:
               
               
                打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下代码:
                import fl.controls.ProgressBarDirection; 
import fl.controls.ProgressBarMode; 
import flash.events.Event; 
 
aPb.direction = ProgressBarDirection.RIGHT; 
aPb.mode = ProgressBarMode.MANUAL; 
aPb.minimum = aNs.minimum; 
aPb.maximum = aNs.maximum; 
aPb.indeterminate = false; 
 
aNs.addEventListener(Event.CHANGE, nsChangeHandler); 
 
function nsChangeHandler(event:Event):void { 
    aPb.value = aNs.value; 
    aPb.setProgress(aPb.value, aPb.maximum); 
progLabel.text = "Percent of progress = " + int(aPb.percentComplete) + "%"; 
}
               
                选择“控制”>“测试影片”以运行此应用程序。
               
               
                单击 NumericStepper 上的向上箭头,以推进进度栏。
                
             
              
             
             
              使用 ActionScript 创建 ProgressBar
             
              此示例使用 ActionScript 创建一个 ProgressBar。除此之外,它还重复上一示例的功能,即在手动模式下创建 ProgressBar。
              
              
               
                创建一个新的 Flash (ActionScript 3.0) 文档。
               
               
                将 ProgressBar 组件拖到“库”面板中。
               
               
                将 NumericStepper 组件拖到“库”面板中。
               
               
                将 Label 组件拖到“库”面板中。
               
               
                打开“动作”面板,在主时间轴中选择第 1 帧,然后输入以下代码:
                import fl.controls.ProgressBar; 
import fl.controls.NumericStepper; 
import fl.controls.Label; 
import fl.controls.ProgressBarDirection; 
import fl.controls.ProgressBarMode; 
import flash.events.Event; 
 
var aPb:ProgressBar = new ProgressBar(); 
var aNs:NumericStepper = new NumericStepper(); 
var progLabel:Label = new Label(); 
 
addChild(aPb); 
addChild(aNs); 
addChild(progLabel); 
 
aPb.move(180,175); 
aPb.direction = ProgressBarDirection.RIGHT; 
aPb.mode = ProgressBarMode.MANUAL; 
 
progLabel.setSize(150, 22); 
progLabel.move(180, 150); 
progLabel.text = ""; 
 
aNs.move(220, 215); 
aNs.maximum = 250; 
aNs.minimum = 0; 
aNs.stepSize = 1; 
aNs.value = 0; 
 
aNs.addEventListener(Event.CHANGE, nsChangeHandler); 
 
function nsChangeHandler(event:Event):void { 
aPb.setProgress(aNs.value, aNs.maximum); 
progLabel.text = "Percent of progress = " + int(aPb.percentComplete) + "%"; 
}
               
                选择“控制”>“测试影片”以运行此应用程序。
               
               
                单击 NumericStepper 上的向上箭头,以推进进度栏。
                
           |  |  |