`
ch_kexin
  • 浏览: 903054 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

AS3工程中Loading的应用(Frame标签的使用)

 
阅读更多
Demo1:
原理的话就是使用[frame()]标签,改变文档类指向。
默认程序入口:
package
{
import flash.display.Sprite;
import mx.core.BitmapAsset;

[Frame(factoryClass="SystemManager",label="hello")]

public class MyApplication extends Sprite {
  
   [Embed(source="test.png")]
   private var bigPicCls:Class;
  
   public function MyApplication() {
    var b:BitmapAsset = new bigPicCls() as BitmapAsset;
    addChild(b);
   }
}
}

被指向的主文档类:
package {
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.utils.getDefinitionByName;

public class SystemManager extends MovieClip 
{
   private var preLoader:PreLoader;
  
   public function SystemManager() {
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;
   
    stop();
   
    preLoader = new PreLoader();
    addChild(preLoader);
   
    preLoader.x = stage.stageWidth/2 - preLoader.width/2;
    preLoader.x = stage.stageHeight/2 - preLoader.height/2;
   
    loaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandle);
    loaderInfo.addEventListener(Event.COMPLETE,completeHandler);
   }
  
   private function progressHandle(e:ProgressEvent):void 
   {
    preLoader.setProgress(e.bytesLoaded,e.bytesTotal);
   }
  
   private function completeHandler(e:Event):void {
    loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progressHandle);
    loaderInfo.removeEventListener(Event.COMPLETE,completeHandler);
   
    removeChild(preLoader);
    preLoader = null;
   
    nextFrame();
   
    initApplication();
   }
  
   private function initApplication():void {
    /**这里不能直接写成:
    var app:Application = new Application();
    这样的由于引用到 Application,Application中所有的资源都会被编译到第一帧来
    这样的话 PreLoader就没有意义了,你也看不到PreLoader,就跳到第二帧了
    **/
    var appCls:Class = getDefinitionByName("MyApplication") as Class;
    var app:DisplayObject = new appCls() as DisplayObject;
    addChild(app);
   }
}
}

进度条:
package 
{
import flash.display.Sprite;
import flash.text.TextField;

public class PreLoader extends Sprite 
{
   public function PreLoader() 
   {
    var t:TextField = new TextField();
    t.border = true;
    t.text = "loading......";
   
    addChild(t);
   }
  
   public function setProgress(loaded:uint,total:uint):void 
   {
    var t:TextField = getChildAt(0) as TextField;
    t.text = "load: "+ loaded/1000 + "/" + total/1000;
   
    trace("load: "+ loaded/1000 + "/" + total/1000);
   }
}
}

Demo2:
由于AS工程没有帧..所以不能用常用的方法来做Loading,这里介绍的方法使用元标签Frame(应该是元标签吧?还是叫元数据标签),网上对Frame的介绍是...使用指定的类替换文档类,并把其它的东西都丢到了该类的第二帧。
引用
Preloader类

  package

  {
  import flash.display.DisplayObject;
  import flash.display.MovieClip;
   import flash.display.StageScaleMode;
  import flash.events.Event;
  import flash.events.ProgressEvent;
  import flash.text.TextField;
  import flash.text.TextFormat;
  import flash.utils.getDefinitionByName;
  /**

  * 加载类,由于原内容会放到此类的第二帧~所以需要使用MovieClip;

  * @author L4cd.Net

  */
  public class Preloader extends MovieClip
  {
  [Embed(source="l4cd_48_48.jpg")]
  private var LogoClass:Class;
  private var text:TextField;
  public function Preloader()
  {
  //不多说了
  stage.scaleMode = StageScaleMode.NO_SCALE;
  stage.showDefaultContextMenu = false;
  //显示一张图片..非必要
  with(addChild(new LogoClass()))
  {
  x=(500-48)/2;
  y=(380-48)/2;
  }
  //加一个textField显示进度
  text = addChild(new TextField()) as TextField;
  with(text)
  {
  defaultTextFormat = new TextFormat("宋体",12,0,null,null,null,null,null,"center");

  mouseEnabled = false;

  height = 16;

  x = (500-100)/2;

  y = 35+(380-15)/2;

  }

  //重要~侦听~

  loaderInfo.addEventListener(ProgressEvent.PROGRESS,progress);

  loaderInfo.addEventListener(Event.COMPLETE,complete);

  }

  //显示进度

  private function progress(e:ProgressEvent):void

  {

  text.text = (e.bytesLoaded/e.bytesTotal*100).toFixed(2)+"% Loaded";

  }

  private function complete(e:Event):void

  {

  //重要..加载完后...我们跳转到第二帧

  gotoAndStop(2);

  //获取文档类...然后显示,对于此步操作..有多种方法..有人习惯直接把原文档类addChild到此类当中..

  var mainClass:Class = Class(getDefinitionByName("AsProjectLoadingExample"));

  stage.addChild(new mainClass() as DisplayObject);

  //删除此类

  destroy();

  }

  private function destroy():void

  {

  loaderInfo.removeEventListener(ProgressEvent.PROGRESS,progress);

  loaderInfo.removeEventListener(Event.COMPLETE,complete);

  parent.removeChild(this);

  }

  }

  }

  AsProjectLoadingExample类

  package {

  import flash.display.Bitmap;

  import flash.display.BitmapData;

  import flash.display.Sprite;

  import flash.geom.Matrix;

  [SWF(width="500",height="380",backgroundColor="#FFFFFF",frameRate="24")]

  //注意此行,Preloader为类名

  [Frame(factoryClass="Preloader")]

  public class AsProjectLoadingExample extends Sprite

  {

  [Embed(source="CD艳照.png")]

  private var ImageClass:Class;

  //嵌入一个2M的文件以显示加载效果

  [Embed(source="something.wma",mimeType="application/octet-stream")]

  private var SomeClass:Class;
   public function AsProjectLoadingExample()
  {
 //马赛格ing...
  var bmp:Bitmap = new ImageClass();
   var bit:BitmapData = new BitmapData(bmp.width/10,bmp.height/10,true,0);
  bit.draw(bmp,new Matrix(.1,0,0,.1));
  with (addChild(new Bitmap(bit)))
  {
  scaleX = scaleY = 10;
    }
    }
  }
 }

分享到:
评论

相关推荐

    flash AS3 loading

    "FLASH AS3 loading" 指的是使用AS3来实现加载功能,这通常涉及到动态地加载外部资源,如图像、声音、视频或SWF文件。在AS3中,加载资源是通过Loader类来实现的,它提供了处理不同类型媒体加载的接口。 首先,...

    FLASH AS3 loading 源文件 源代码

    在Flash AS3编程中,加载(Loading)是关键功能之一,允许开发者动态地在应用程序运行时引入外部资源,如图像、SWF文件、XML或文本数据。本资源包含了一个名为"loading_as3"的示例项目,其中包括了loading_as3.fla...

    Flash CS3 AS3.0影片Loading制作

    Flash CS3 AS3.0影片Loading制作

    AS3 loading 外部文件

    在AS3中,加载外部文件涉及到从服务器或本地磁盘读取并解析数据,将其转换为可以在应用程序中使用的格式。这包括但不限于图像、音频、视频、文本文件、SWF文件等。通过加载外部文件,开发者能够动态地更新内容,提高...

    CSS3 实现Loading加载,页面遮罩层的应用

    本文将深入探讨如何使用CSS3来实现这两种功能,并解释它们在实际应用场景中的重要性。 首先,让我们来了解什么是“Loading加载”。Loading加载通常出现在网页或应用程序加载初期,它是一个可视化的提示,告知用户...

    as3.0 开发的钟表型动画Loading源码

    在这个"钟表型动画Loading源码"中,我们可以深入探讨AS3.0的几个关键知识点。 首先,`Loading`在编程中通常指的是加载指示器,它向用户展示应用程序或资源正在加载的过程。在AS3.0中,我们可以通过`Loader`类来实现...

    android 3种自定义 Loading加载

    在Android应用开发中,"加载"(Loading)通常是指一种用户界面元素,它在应用程序执行耗时操作(如网络请求、数据库操作等)时显示,以告知用户程序正在处理数据并提供反馈。自定义Loading可以帮助开发者创建更具...

    X-Frame-Options相关文件

    标签中的“X-Frame-Opti in a frame b”可能是指在B框架(frame)中遇到了X-Frame-Options的问题,这可能是由于尝试在B框架内加载了一个设置了X-Frame-Options的页面,导致加载失败。 根据提供的压缩包子文件的文件...

    基于Bootstrap 3内置loading指示器的提交按钮特效

    6. **dist和related**:`dist`目录通常包含编译后的、可以直接在生产环境中使用的资源,如minified版本的CSS和JS文件。`related`可能包含与项目相关的其他资源或示例文件。 7. `index.html`和`readme.html`是网页的...

    vuerouter切换时loading效果实现

    在Vue.js应用中,路由管理器Vue Router是一个至关重要的组件,它使得页面间的导航变得简单且优雅。在实际开发中,我们经常需要在路由切换时添加加载效果,以提升用户体验,尤其是在处理异步数据或者等待资源加载时。...

    CSS3 实现Loading加载,页面遮罩层的应用2017/8/15

    "CSS3实现Loading加载,页面遮罩层的应用"这一主题,旨在探讨如何利用CSS3来创建吸引人的加载动画以及有效的页面遮罩层,以提升用户的浏览体验。 1. CSS3 Loading加载: - `@keyframes` 规则:这是CSS3中定义动画...

    3款漂亮的Flash Loading加载效果

    Loading,即“加载”,是指在用户打开或切换网页、应用时显示的一种视觉提示,表明内容正在加载中。Flash Loading则是利用Adobe Flash软件制作的加载动画,它不仅能够告知用户等待过程,还可以通过精美的设计提高...

    CSS3超酷的Loading页面

    以上就是使用CSS3创建超酷Loading页面时需要掌握的一些核心技术点。在实践中,结合HTML结构和JavaScript交互,可以创造出更多创新和独特的Loading动画效果。通过不断学习和实践,开发者可以充分利用CSS3的潜力,为...

    CSS3网页Loading

    在实际应用中,我们需要考虑不同浏览器对CSS3特性的兼容性,确保Loading动画能在各种环境下正常工作。可以借助工具如Autoprefixer来自动添加必要的浏览器前缀,或者使用渐进增强的方法,确保基础的加载效果在所有...

    css3炫酷3D立方体预加载loading特效

    在本文中,我们将深入探讨如何使用CSS3创建一个炫酷的3D立方体预加载loading特效,这是一个在网页加载过程中吸引用户注意力的实用设计。这个特效利用了CSS3的先进特性,包括3D变换、过渡和动画,为用户提供了一种...

    gif loading 透明背景

    在网页设计中,使用具有透明背景的GIF loading动画有以下几个优点: 1. **融合性**:透明背景使loading动画能无缝地融入任何背景,无论是纯色还是复杂的图像。 2. **视觉效果**:动态的加载动画可以吸引用户的注意力...

    Android 自定义全局Loading页面

    在Android应用开发中,为了提供良好的用户体验,我们经常需要在数据加载、网络请求或其它耗时操作时显示全局Loading页面,以告知用户程序正在进行后台处理并提示他们稍等片刻。本篇文章将深入探讨如何在Android中...

    css3漏斗型Loading加载动画.zip

    在“css3漏斗型Loading加载动画”项目中,CSS3的几个关键特性被充分利用,包括: 1. **选择器3**:更加强大的选择器允许开发者精确地定位和操作页面上的元素,比如使用`:nth-child()`来控制每一段动画的顺序。 2. ...

    swing 鼠标事件 loading效果

    在Java的Swing库中,鼠标事件(Mouse Events)是用户与GUI组件交互的重要部分,而loading效果则通常指的是在处理耗时操作时显示的一种视觉指示,以告知用户程序正在运行且尚未完成。本篇文章将深入探讨如何在Swing...

    Css3动画 实现loading效果

    这段代码表示选择器`.loading-spinner`中的元素会应用名为`rotate`的动画,持续2秒,以线性速度(即速度恒定)执行,并且无限次循环。 在实现loading效果时,我们可以创建一个简单的HTML结构,如一个带有背景色或...

Global site tag (gtag.js) - Google Analytics