开发者

How to duplicate loaded *.swf without setting a class name

I have read this article about abstracting assets from ActionScript:

Abstracting Assets from Actionscript in AS3.0 – Asset Libraries and DuplicateMovieClip

But it requires to set the Linkage Class name. How can I get the same result without setting the linkage class name?

What I 开发者_JAVA技巧want to do is to cache a loaded asset, and use the cached version every time I request the same URL. A solution is to clone the loaded DisplayObject, but I think it's unnecessary since I only want a new copy.


I think the way to do that is to use byte arrays

here's a quick sample

// once you load your data...
private function loaderComplete(event:Event):void
{
    var loaderInfo:LoaderInfo = LoaderInfo(event.target);
    var byteArray:ByteArray = loaderInfo.bytes; //<- this will create your byte array
}

you can then use byteArray.readObject(); to generate the new class;

look at senocular's post at http://www.kirupa.com/forum/showthread.php?p=1897368 where he's got a function like this:

function clone(source:Object):* {
    var copier:ByteArray = new ByteArray();
    copier.writeObject(source);
    copier.position = 0;
    return(copier.readObject());
}
//that you use with 
newObjectCopy = clone(originalObject);

hope this gets you started


As of Flash 11.3, there's a function named getQualifiedDefinitionNames that tells me exactly what linkage names should I use with getDefinition, so there's no need to know the values beforehand.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜