`
hereson
  • 浏览: 1458736 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ActionScript 3.0实例—Loading

阅读更多
ActionScript 3.0做Loader似乎有点麻烦,但肯定比ActionScript 2.0更强大。下面这个实例在用百分比显示进度的基础上,使用BitmapData类结合Timer类实现图片像素溶解出场,并为图片添加dropShadow和Bevel滤镜。当图片像素溶解到一半的时候,将移除下载状态的提示信息文本。代码如下:

package com.riafan.tutorials {
    import flash.text.*;
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.net.URLRequest;
    import flash.utils.Timer;
    import flash.geom.*;

    public class LoaingDemo extends MovieClip {
        private var bitmapData:BitmapData=new BitmapData(600,450,true,0xFFFFFFFF);
        private var sourceBitmapData:BitmapData=new BitmapData(600,450,true,0xFFFFFFFF);
        private var loader:Loader=new Loader();
        private var tf:TextField;
        private var rec:Rectangle=sourceBitmapData.rect;
        private var randomSeed:uint=0;
        private var times:uint=30;
        private var numberOfPixels:uint=(rec.width*rec.height)/times;

        public function LoaingDemo() {
            //滤镜应用
            var dropShadowFilter:DropShadowFilter=new DropShadowFilter();
            var bevelFilter:BevelFilter=new BevelFilter();
            loader.filters=[dropShadowFilter,bevelFilter];
            //指定bitmap images
            var bitmap:Bitmap=new Bitmap(bitmapData);
            addChild(bitmap);
            //添加TextField
            tf=new TextField();
            addChild(tf);
            //初始化TextField
            tf.text="开始下载";
            tf.selectable=false;
            tf.autoSize = TextFieldAutoSize.CENTER;
            tf.background=true;
            tf.backgroundColor=0xFFFFCC;
            tf.textColor=0x000000;
            tf.x=(550-tf.width)/2;
            tf.y=(400-tf.height)/2;
            //下载图片
            var req:URLRequest=new URLRequest();
            req.url="flower.jpg";
            loader.load(req);
            //为LoaderInfo对象注册侦听器
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
            loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress);
            loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onError);
        }
        //正在下载时执行
        private function onProgress(e:Event):void {
            var info:LoaderInfo=e.target as LoaderInfo;
            var percent:int=((info.bytesLoaded)/(info.bytesTotal))*100;
            tf.text="已经下载"+percent.toString() + "%";
            tf.textColor=0x009900;
        }
        //下载完毕后执行
        private function onComplete(e:Event):void {
            var matrix:Matrix=new Matrix(.5,0,0,.5,19,8);
            sourceBitmapData.draw(loader,matrix);
            //stage应用
            loader.x=(stage.stageWidth-loader.width)/2;
            loader.y=(stage.stageHeight-loader.height)/2;
            tf.text="下载完毕";
            tf.textColor=0x000000;
            //timer应用
            var timer:Timer=new Timer(60,times);
            var removeTimer:Timer=new Timer(1000);
            //注册time侦听器
            timer.addEventListener(TimerEvent.TIMER,onTimer);
            timer.start();
        }
        //下载出错时执行
        private function onError(err:IOErrorEvent):void {
            tf.text=err.text;
            tf.textColor=0x990000;
        }
        //当Timer对象达到指定的延迟间隔时执行
        private function onTimer(e:TimerEvent):void {
            //像素溶解特效
            randomSeed=bitmapData.pixelDissolve(sourceBitmapData,rec,new Point(0,0),randomSeed,numberOfPixels);
            //当图片像素溶解到一半的时候,移除下载状态的提示信息文本
            if (e.target.currentCount==times/2) {
                removeChild(tf);
            }
        }
    }
}

说明:

ActionScript 3.0中的Loader类与ActionScript 2.0的MovieClipLoader类相似。注意:注册侦听器时是为LoaderInfo对象注册而非Loader实例本身。
在ActionScript 3.0中Timer类已经取代了setInterval命令,它不但可以设置延迟的时间、执行的次数,还可以控制定时器的开始、停止和重置。 
分享到:
评论

相关推荐

    flash as3.0 + xml 经典flv视频播放

    这个项目涉及的关键知识点包括ActionScript 3.0编程、XML数据解析以及FLV视频格式的处理。 首先,ActionScript 3.0是Adobe Flash Player支持的一种面向对象的编程语言,它具有更高效、更严格的类型检查和错误处理...

    AS3.0算法大全

    6.【Flash基础理论课01】制作时钟和【Flash基础理论课14】制作Loading,这些实例体现了AS3.0在实现应用内特定功能方面的实用性,如动态显示时间、加载状态提示等。 7.【AS功能代码教程06】AS绘图总结及补充和【AS...

    FLASH AS3 loading 源文件 源代码

    ActionScript 3.0(AS3)是Flash平台的主要编程语言,它带来了更强大的性能和面向对象的特性。AS3中的类和包结构显著提高了代码的组织性和可维护性。 2. **Loader类** 在AS3中,`flash.display.Loader`类是用于...

    Flash Loading源程序

    从ActionScript 2.0开始,它引入了类和面向对象的概念,而ActionScript 3.0则进一步增强了性能和功能。 2. **Loader类**:在ActionScript中,Loader类是用于加载各种类型媒体的关键组件。通过实例化Loader对象,...

    AS3超值范例之进度条代码.rar

    AS3超值范例之进度条代码是一款基于ActionScript 3.0的Flash应用程序,用于实现视觉化的加载进度条效果。ActionScript 3是Adobe Flash Professional中的编程语言,用于创建交互式、动态的多媒体内容。这个例子展示了...

    AS3预加载SWF实例源码

    本实例源码主要讲解如何使用AS3(ActionScript 3.0)和Flash Professional来创建预加载程序。 在AS3中,预加载通常涉及到以下几个关键知识点: 1. **事件监听器**:AS3中的事件驱动模型是预加载的核心。你需要监听...

    flash常用代码,欢迎大家下载

    而从Flash CS3开始,ActionScript升级到了3.0,引入了许多改进,如面向对象编程和性能优化。 1. **全屏切换**:在Flash中,实现全屏功能通常涉及到修改Stage的尺寸。在ActionScript 3.0中,你可以使用以下代码: `...

    图片压缩flex demo

    它允许开发者使用ActionScript 3.0语言和Flex组件库创建动态、交互式的用户界面。 描述中的"修改路径"可能是指在应用中处理图片时,需要指定输入图片的路径或者保存压缩后图片的新路径。这涉及到文件I/O操作,包括...

    Flash鼠标箭头特效 附源文件.rar

    在这个特效中,开发人员可能使用了ActionScript 2.0或3.0,这是Flash编程的主要语言,用于控制动画行为和交互。ActionScript允许开发者编写脚本,实现对象的动态响应,例如在这里,鼠标点击事件触发箭头的动画效果。...

    flamenu_src_flash源码_

    ActionScript 2.0或3.0是Flash菜单中的关键部分,负责处理用户交互、数据操作和逻辑控制。ActionScript基于ECMAScript,具有面向对象的特性,允许开发者创建复杂的程序结构。在“FLAMENU_SRC”中,我们可能找到以下...

    精心收集8款FLASH焦点广告源码

    源码中可能会涉及ActionScript 2.0或3.0,包括对象、类、事件处理、时间轴控制等概念。 2. **Timeline Control**:如何利用代码控制Flash的时间轴,实现图片或内容的自动轮换,包括play(), stop(), gotoAndPlay(), ...

    secaiLOADING.rar_FlashMX/Flex源码_FlashMX_

    7. **ActionScript 2.0**:由于描述中提到的测试平台是Flash 8.0,所以这个源码可能使用的是ActionScript 2.0,这是Flash MX支持的版本,不同于后来的AS3.0。 要查看和编辑这个源文件,你需要Adobe Flash Player或...

Global site tag (gtag.js) - Google Analytics