Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3库不兼容_Actionscript 3_Namespaces_Swc_Smartfoxserver - Fatal编程技术网

Actionscript 3 AS3库不兼容

Actionscript 3 AS3库不兼容,actionscript-3,namespaces,swc,smartfoxserver,Actionscript 3,Namespaces,Swc,Smartfoxserver,背景: 我正在写一个flash游戏,遇到了一个问题。 我一直在使用Polygol的AS3数据结构(),没有任何问题 我最近在游戏中添加了SmartFoxServer 2X支持()。导入SmartFox SWC文件后,我会在“new LinkedQueue()”调用中收到运行时错误,这表明覆盖不兼容 无论如何,我在Polygol上提交了一个bug,结果表明SmartFox使用的是他的数据结构的旧版本,并将其包含在他们的SWC文件中 我的问题: 考虑到我只有两个SWC文件,有没有什么方法可以强制将其

背景:

我正在写一个flash游戏,遇到了一个问题。 我一直在使用Polygol的AS3数据结构(),没有任何问题

我最近在游戏中添加了SmartFoxServer 2X支持()。导入SmartFox SWC文件后,我会在“new LinkedQueue()”调用中收到运行时错误,这表明覆盖不兼容

无论如何,我在Polygol上提交了一个bug,结果表明SmartFox使用的是他的数据结构的旧版本,并将其包含在他们的SWC文件中

我的问题:


考虑到我只有两个SWC文件,有没有什么方法可以强制将其中的一个文件放到另一个名称空间中?这将允许我在使用smartfox旧版本的同时使用新版本。

是的,如果它真的很重要,并且您想花时间,可以通过更改swf和内部目录来修改swc中的包

下面是一个示例空气项目,使用:


然后,您必须在catalog.xml中进行查找/替换,然后重新打包。

我来看看smartfox和Polygol的同事们有什么想法。目前,我已经通过在顶部加载旧版本来完成工作。我是否应该将您的答案标记为已接受的答案?我的意思是,这本身并不是一个解决方案,但我不希望其他任何人做出回应。@Aaron我添加了一些代码,以防您这样做,所以现在它应该是您问题的实际答案。
public class SWFWireCompiler extends Sprite
{
    public function SWCEditor()
    {
        stage.nativeWindow.activate();

        var bytes:ByteArray = getBytes('library.swf');

        var swfReader:SWFReader = new SWF10Reader();
        var readResult:SWFReadResult = swfReader.read(new SWFByteArray(bytes));
        readResult.swf.header.signature = SWFHeader.UNCOMPRESSED_SIGNATURE;

        for each(var tag:SWFTag in readResult.swf.tags)
        {
            var abcTag:DoABCTag = tag as DoABCTag;
            if(abcTag)
            {
                for each(var string:StringToken in abcTag.abcFile.cpool.strings)
                {
                    if(string.utf8 == 'de.polygonal.ds')
                    {
                        string.utf8 = 'de.polygonal.ds.old';
                    }
                }
            }
        }

        var swfWriter:SWFWriter = new SWF10Writer();
        var writeResult:SWFWriteResult = swfWriter.write(readResult.swf);

        writeBytes('C:\\output.swf', writeResult.bytes);
    }

    private function getBytes(file:String):ByteArray
    {
        var bytes:ByteArray = new ByteArray();
        var stream:FileStream = new FileStream();
        stream.open(File.applicationDirectory.resolvePath(file), FileMode.READ);
        stream.readBytes(bytes);
        stream.close();
        return bytes;
    }

    private function writeBytes(filename:String, bytes:ByteArray):void
    {
        var file:File = new File(filename);
        var fs:FileStream = new FileStream();
        fs.open(file, FileMode.WRITE);
        fs.writeBytes(bytes);
        fs.close();
    }
}