学习Flash as中利用Library类--实现动态加载外部的显示元件和类的方法
这段时间在尝试使用fdt来开发Flash应用,在使用的过程发现如何使用fla文件的显示元件(这些显示元件本身也绑定了类,也有自己的功能)?这个问题也一直让我头疼。最近我参考了网上的一些开源项目再结合我自己的想法,终于解决了这个问题。我现在把这个Library类进行打包。它可以很方便的动态加载外部的显示元件和类,很适合在fdt和flex开发环境中使用,很方便把显示层的元件放到独立的swf里。
Library类(调用接口)
复制内容到剪贴板
代码:
package com.klstudio.swf {
import flash.events.EventDispatcher;
import flash.display.DisplayObject;
[Event(name="ioError", type="flash.events.IOErrorEvent")]
[Event(name="complete", type="flash.events.Event")]
public class Library extends EventDispatcher implements ILibrary {
function Library(path : String);
public function getClassOf(linkage : String) : Class;
public function getFactory() : ILibrary;
public function getInstanceOf(linkage : String) : DisplayObject;
public function load(path : String = "") : void;
}
}
LibrarySWF类(调用接口)
复制内容到剪贴板
代码:
package com.klstudio.swf {
import flash.display.MovieClip;
import flash.events.EventDispatcher;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.display.DisplayObjectContainer;
import flash.display.DisplayObject;
public class LibrarySWF extends MovieClip implements ILibrary {
public function getClassOf(linkage : String) : Class;
public function getInstanceOf(linkage : String) : DisplayObject;
}
}
LibrarySWF类是用于绑定到fla文件(库里有显示元件)的文档类上即可
然后就可以直接外部调用了
复制内容到剪贴板
代码:
package com.klstudio.swf.test {
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.IOErrorEvent;
import flash.events.Event;
import com.klstudio.swf.Library;
/**
* @link kinglong@gmail.com
* @author Kinglong
* @playerversion fp9+
* @version 0.1
*/
[SWF(width="200",height="200",frameRate="24",backgroundColor="#CCCCCC")]
public class TestLibrary extends Sprite {
private var lib:Library;
public function TestLibrary(){
lib = new Library("buttons.swf");
lib.addEventListener(Event.COMPLETE, libHandler);
lib.addEventListener(IOErrorEvent.IO_ERROR, libHandler);
lib.load();
}
private function libHandler(event:Event):void{
trace(event);
switch(event.type){
case Event.COMPLETE:
var button:DisplayObject = lib.getInstanceOf("PlayButton");
button.x = 10;
button.y = 10;
addChild(button);
break;
case IOErrorEvent.IO_ERROR:
break;
}
}
}
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |