Flash AS3教程:ClassLoader类

所属分类: 媒体动画 / Flash教程 阅读数: 54
收藏 0 赞 0 分享
前面介绍了Flash AS3教程:Dot类,接着介绍ClassLoader类!
主要用途
1、在用flash做项目的时候,把一些元件,通过设置链接类,然后使用这个类,通过getClass方法即可把这个素材拿下来


图1(详见例1)
2、将许多许多的类分库到不同的swf中,然后通过调用swf,达到调用类库的功能,然后通过getClass来获取类(详见例2)
index.base.net.ClassLoader类讲解:
加载swf文件,并且通过调用getClass获取类,也可以获取命名空间或者函数的定义
构造函数
public function ClassLoader(obj:Object = null,lc:LoaderContext = null)
参数1可以是字符串,可以是ByteArray,如果为前者则采用load方法,后者采用loadBytes方法
参数2是创建带有指定 LoaderContext 对象的ClassLoader实例,LoaderContext 可以设置是否加载跨域文件,应用程序域等,详见官方LoaderContext类讲解!
load 方法
public function load(_url:https://www.jb51.net/flash/String,lc:LoaderContext = null):void
加载文件
参数1是加载地址,参数2见构造函数
loadBytes 方法
public function loadBytes(bytes:ByteArray,lc:LoaderContext = null):void
加载字节文件
参数1是字节数据,参数2见构造函数
getClass 方法
public function getClass(className:https://www.jb51.net/flash/String):Object
获取一个公共定义,可以是类,也可以是命名空间或者函数定义
参数1是获取class的完整包加类名,比如我们的这个类完整定义名称是 index.base.net.ClassLoader
详见例子
hasClass 方法
public function hasClass(className:https://www.jb51.net/flash/String):Boolean
返回是否含有该公共定义
参数1见getClass方法
clear 方法
public function clear():void
清空
url 属性
public var url:https://www.jb51.net/flash/String
获取url属性
loader 属性
public var loader:Loader
获取loader属性

例子1:


图2
这是一个虚拟人物形象的动作包,其中包含了8种不同的动作
在使用ClassLoader加载这个swf的动作包后,即可使用getClass来调用这些素材,而且可以重复的new这些元件,来达到多次重复使用
import index.base.net.ClassLoader;
var cl:ClassLoader = new ClassLoader;
cl.load("main.swf");
cl.addEventListener(Event.COMPLETE,fun);
function fun(e:Event){
var tmp = cl.getClass("drag");
addChild(new tmp);
}
例子2:
将设我有一个类库,有这么三个类
然后把它编译成swf
我们另外建一个文件,来加载这个所谓的类库
import index.base.net.ClassLoader;
var cl:ClassLoader = new ClassLoader;
cl.load("main.swf");
cl.addEventListener(Event.COMPLETE,fun);
function fun(e:Event){
var tmp1 = cl.getClass("index.base.net.ByteLoader");
trace(tmp1)

var tmp2 = cl.getClass("index.base.net.ClassLoader");
trace(tmp2)

var tmp3 = cl.getClass("index.base.geom.Dot");
trace(tmp3)
}
/**
* trace的结果:
* [class ByteLoader]
* [class ClassLoader]
* [class Dot]
*/
我们的目的就达到了!
接下来是源代码!
package index.base.net{

import flash.display.Loader;
import flash.net.URLRequest;
import flash.utils.ByteArray;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.EventDispatcher;
import flash.system.LoaderContext;

public class ClassLoader extends EventDispatcher{

public var url:https://www.jb51.net/flash/String;
public var loader:Loader;

//构造函数
public function ClassLoader(obj:Object = null,lc:LoaderContext = null) {
if(obj != null){
if(obj is ByteArray){
loadBytes(obj as ByteArray,lc);
}else if(obj is https://www.jb51.net/flash/String){
load(obj as https://www.jb51.net/flash/String,lc);
}else{
throw new Error("参数错误,构造函数第一参数只接受ByteArray或https://www.jb51.net/flash/String");
}
}
}

//加载
public function load(_url:https://www.jb51.net/flash/String,lc:LoaderContext = null):void{
url = _url;
loader = new Loader;
loader.load(new URLRequest(url),lc);
addEvent();
}

//加载字节
public function loadBytes(bytes:ByteArray,lc:LoaderContext = null):void{
loader = new Loader;
loader.loadBytes(bytes,lc);
addEvent();
}

//开始侦听
private function addEvent():void{
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressFun);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeFun);
}

//结束侦听
private function delEvent():void{
loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,progressFun);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,completeFun);
}

//加载成功,发布成功事件
private function completeFun(e:Event):void {
delEvent();
dispatchEvent(e);
}

//加载过程
private function progressFun(e:ProgressEvent):void{
dispatchEvent(e);
}

//获取定义
public function getClass(className:https://www.jb51.net/flash/String):Object {
return loader.contentLoaderInfo.applicationDomain.getDefinition(className);
}

//是否含有该定义
public function hasClass(className:https://www.jb51.net/flash/String):Boolean {
return loader.contentLoaderInfo.applicationDomain.hasDefinition(className);
}

//清除
public function clear():void{
loader.unload();
loader = null;
}
}
}

更多精彩内容其他人还在看

Flash cs3绘制人物高级行走动画教程

本教程向大家介绍Flash cs3绘制人物高级行走动画效果,教程难度不是很大,绘制方法及过程介绍的也非常详细,教程很实用,转发过来,希望大家喜欢
收藏 0 赞 0 分享

Flash CS4来制作漂亮的气泡动画教程

本教程向脚本之家的朋友介绍用Flash CS4来制作漂亮的气泡动画,制作出来气泡真的很好看,制作效果是采用代码形式实现,觉得很不错,转发过来,感兴趣的朋友可以一起来学习
收藏 0 赞 0 分享

flash基础教程:帧、关键帧、空白帧概念及区别介绍

动画的产生是帧来实现的,那什么是帧?帧、关键帧和空白帧之间又有什么区别?本文就为大家介绍一下三者之间的关系
收藏 0 赞 0 分享

Flash教程:动画背景的绘制方法之透视篇(给新手)

Flash动画在网络上的广泛传播,已经成为上网一族喜闻乐见的一种艺术形式。动画背景的绘制方法有很多,也有很多表现方法。这里将结合透视学的基础知识向大家简单的介绍一下动画背景的绘制。
收藏 0 赞 0 分享

Flash AS入门教程:Flash AS3.0制作有年份有日期的时钟

本教程是向大家介绍利用Flash AS3.0制作有年份有日期的时钟,虽然制作时钟老套了点,但它确可以较全面地应用到时间日期和间隔等知识,仍不失为较好的入门练习,转发给大家,希望对大家有所帮助
收藏 0 赞 0 分享

Flash相册制作大师具体该如何使用 Flash相册制作大师使用教程

在本文中我们将会看到的是Flash相册制作大师的具体使用的方法
收藏 0 赞 0 分享

flash基础教程:混色器面板图文介绍

混色器面板是Flash中用于色彩处理的一个重要面板,熟练地使用该面板,可以帮助用户快速地完成色彩的填充,编辑出色彩丰富的图形。本教程为大家详细介绍一下混色器面板,希望对大家有所帮助
收藏 0 赞 0 分享

25个绝对让你应接不暇的Flash网站创意

在Web设计过程中,运用成熟的Flash技术可以把你任意想到的idea表现到产品页面中。这里为你整理发现了25个绝对让你应接不暇的 Flash网站创意,更好地体现网站的互动应用,同时可以让你大饱眼福,一起来欣赏吧
收藏 0 赞 0 分享

教你用Flash制作非常酷的二进制时钟动画

今天在这个教程中我们将学习用Flash做一个不同寻常的,但非常酷的时钟:一个二进制时钟,中间用到了代码,但介绍地很详细,相信很值得大家学习
收藏 0 赞 0 分享

Flash动画特效制作技巧:制作超酷的文字炸开动画效果

本教程向大家介绍Flash动画特效制作技巧,本实例是制作文字炸开的动画效果,制作效果非常酷,制作过程也比较简单,喜欢的朋友可以过来学习一下这种制作方法
收藏 0 赞 0 分享
查看更多