Flash共享资源加载

来源:互联网 发布:经济数据日历 编辑:程序博客网 时间:2024/06/06 22:26

http://www.cnblogs.com/captain2011/archive/2011/08/13/2137477.html

Flash共享资源加载

  

       Flash多人开发的时候,常常需要把ui资源分成多个fla文件,若这些fla文件需要用到的很多相同的元件,就要考虑到资源重复利用的问题了。

假设你建了个comm.fla的文件,里面有个元件叫P03_07,你要在其他fla文件中都能使用。Ctrl+C和Ctrl+V这种方式我们就不考虑了,这对维护来说是一个灾难,要是你在100个fla中都用了这个元件,一改就要到100个fla文件中去一个个改,显然非常麻烦。

我们用另一种方法。

首先打开comm.fla文件,新建一个叫“元件1”的影片剪辑,设置该元件的属性,“为Actionscript导出”打上勾,类名写上mytest,url写成comm.swf。

然后在comm.fla下新建一个test.fla文件,在共享栏的“为运行时共享导入”打上勾,url跟上面一样写上comm.swf,然后点击浏览按钮,找到comm.fla,选中刚才新建元件。点确定按钮。再重新打开这个元件的属性面板,即使刚才你为该元件的类命名了,flash还是会自动把这个类名设置成你所导入的那个元件的类名。

 

这两步完了之后分别给这两个fla文件生成swf文件,将生成的swf文件放在同一文件夹下。

下面进行代码测试。加载test.swf文件并获取comm.swf中的元件:

复制代码
private function testRes():void
        {
            loader 
= new Loader();
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
            loader.load(
new URLRequest("test.swf"),new LoaderContext(false,ApplicationDomain.currentDomain));
        }

    
private function onComplete(e:Event):void
{
            var cls:Class 
= loader.contentLoaderInfo.applicationDomain.getDefinition('mytest'as Class;
            var mc:MovieClip 
= new cls();// as MovieClip;
            trace('mc' + mc);
            addChild(mc);

        }
复制代码

 

这样comm.fla中的元件在其他任何fla文件中都可以使用,要修改也只用改comm.fla一个文件,重新发布即可。另外还有一点需要说明的是如果comm.fla中的元件在其他fla文件中被放到场景上,并且为该元件指定了名称,需要为comm的共享元件手动写一个类,比如上面的comm.fla中的mytest元件,要写这样一个类:

 

复制代码
package  
{
    import flash.display.MovieClip;
    
    
/**
     * ...
     * @author dragonWorrior
     
*/
    
public class mytest extends MovieClip 
    {
        
        
public function mytest() 
        {
            
        }
        
    }

}
复制代码

有点麻烦,但也是举手之劳而已。



原创粉丝点击