⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textdump.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            coder.beginObject("envelope", "Envelope");
            coder.readWord("mark", 4, false);
            coder.readWord("leftSoundLevel", 2, false);
            coder.readWord("rightSoundLevel", 2, false);
            coder.endObject();
        }

        void decodeCurve(SWFDecoder coder)
        {
            coder.beginObject("curve", "Curve");

            coder.readBits("type", 2, false);
            
            int fieldSize = coder.readBits("size", 4, false) + 2;
            
            coder.readBits("cx", fieldSize, true);
            coder.readBits("cy", fieldSize, true);
            coder.readBits("ax", fieldSize, true);
            coder.readBits("ay", fieldSize, true);

            coder.endObject();
        }

        void decodeLine(SWFDecoder coder)
        {
            coder.beginObject("line", "Line");

            coder.readBits("type", 2, false);
            
            int fieldSize = coder.readBits("size", 4, false)+2;

            if (coder.readBool("hasXY"))
            {
                coder.readBits("x", fieldSize, true);
                coder.readBits("y", fieldSize, true);
            }
            else
            {
                if (coder.readBool("hasY"))
                {
                    coder.readBits("y", fieldSize, true);
                }
                else // horizontal line
                {
                    coder.readBits("x", fieldSize, true);
                }
            }
            coder.endObject();
        }

        void decodeShapeStyle(SWFDecoder coder)
        {
            int numberOfFillBits = coder.context[SWFDecoder.NumberOfFillBits];
            int numberOfLineBits = coder.context[SWFDecoder.NumberOfLineBits];

            coder.beginObject("shapeStyle", "ShapeStyle");

            coder.readBits("type", 1, false);
            boolean containsStyles = coder.readBool("hasStyles");
            boolean containsLineStyle = coder.readBool("hasLineStyle");
            boolean containsAltFillStyle = coder.readBool("hasAltFillStyle");
            boolean containsFillStyle = coder.readBool("hasFillStyle");
            boolean containsMove = coder.readBool("hasMove");
            
            if (containsMove)
            {
                int moveFieldSize = coder.readBits("size", 5, false);
                coder.readBits("x", moveFieldSize, true);
                coder.readBits("y", moveFieldSize, true);
            }

            if (containsFillStyle)
                coder.readBits("fillStyle", numberOfFillBits, false);

            if (containsAltFillStyle)
                coder.readBits("altFillStyle", numberOfFillBits, false);

            if (containsLineStyle)
                coder.readBits("lineStyle", numberOfLineBits, false);

            if (containsStyles)
            {
                coder.alignToByte();
                
                int fillStyleCount = coder.readWord("fillStyleCount", 1, false);

                if (coder.context[SWFDecoder.ArrayCountExtended] != 0 && fillStyleCount == 0xFF)
                    fillStyleCount = coder.readWord("fillStyleCountExtended", 2, false);

                coder.beginArray("fillStyles");
        
                for (int i=0; i<fillStyleCount; i++)
                {
                    switch (coder.scanWord(1, false))
                    {
                        case Solid:
                            decodeSolidFill(coder);
                            break;
                        case Linear:
                        case Radial:
                            decodeGradientFill(coder);
                            break;
                        case Tiled:
                        case Clipped:
                        case Unsmoothed_Tiled:
                        case Unsmoothed_Clipped:
                            decodeBitmapFill(coder);
                            break;
                    }        
                }
                
                coder.endObject();
        
                int lineStyleCount = coder.readWord("lineStyleCount", 1, false);

                if (coder.context[SWFDecoder.ArrayCountExtended] != 0 && lineStyleCount == 0xFF)
                    lineStyleCount = coder.readWord("lineStyleCountExtended", 2, false);

                coder.beginArray("lineStyles");
        
                for (int i=0; i<lineStyleCount; i++)
                    decodeSolidLine(coder);
                
                coder.endObject();
        
                numberOfFillBits = coder.readBits("numberOfFillBits", 4, false);
                numberOfLineBits = coder.readBits("numberOfLineBits", 4, false);
        
                coder.context[SWFDecoder.NumberOfFillBits] = numberOfFillBits;
                coder.context[SWFDecoder.NumberOfLineBits] = numberOfLineBits;
            }
            coder.endObject();
        }

        void decodeSolidLine(SWFDecoder coder)
        {
            coder.beginObject("solidLine", "SolidLine");
            coder.readWord("width", 2, false);
            decodeColor("color", coder);
            coder.endObject();
        }
      
        void decodeSolidFill(SWFDecoder coder)
        {
            coder.beginObject("solidFill", "SolidFill");
            coder.readWord("type", 1, false);
            decodeColor("color", coder);
            coder.endObject();
        }

        void decodeGradientFill(SWFDecoder coder)
        {
            coder.beginObject("gradientFill", "GradientFill");
            coder.readWord("type", 1, false);
            decodeCoordTransform("coordTransform", coder);
            int count = coder.readWord("gradientCount", 1, false);

            coder.beginArray("gradients");

            for (int i=0; i<count; i++)
                decodeGradient(coder);

            coder.endObject();
            coder.endObject();
        }

        void decodeGradient(SWFDecoder coder)
        {
            coder.beginObject("gradient", "Gradient");
            coder.readWord("ratio", 1, false);
            decodeColor("color", coder);
            coder.endObject();
        }
        
        void decodeBitmapFill(SWFDecoder coder)
        {
            coder.beginObject("bitmapFill", "BitmapFill");
            coder.readWord("type", 1, false);
            coder.readWord("identifier", 2, false);
            decodeCoordTransform("coordTransform", coder);
            coder.endObject();
        }
        
        void decodeShape(SWFDecoder coder)
        {
            coder.beginObject("shape", "Shape");

            coder.context[SWFDecoder.NumberOfFillBits] = coder.readBits("numberOfFillBits", 4, false);
            coder.context[SWFDecoder.NumberOfLineBits] = coder.readBits("numberOfLineBits", 4, false);

            coder.beginArray("path");

            while (coder.scanBits(6, false) > 0)
            {
                if ((coder.scanBits(6, false) & 0x20) > 0)
                {
                    if ((coder.scanBits(6, false) & 0x10) > 0)
                        decodeLine(coder);
                    else
                        decodeCurve(coder);
                }
                else
                {
                    decodeShapeStyle(coder);
                }
            }
            coder.readBits("endOfShape", 6, false);
            coder.alignToByte();
            coder.endObject();
            coder.endObject();
        }

        int decodeMovieObject(SWFDecoder coder)
        {
            int type = coder.scanWord(2, false) >> 6;
            int length = coder.scanWord(2, false) & 0x3F;
            
            coder.context[SWFDecoder.Type] = type;
            
            coder.logValue("type", new Integer(type), coder.getPointer(), 16);
            coder.logValue("length", new Integer(length), coder.getPointer(), 16);

            coder.setPointer(coder.getPointer()+16);

            if (length == 0x3F)
                length = coder.readWord("lengthExtended", 4, false);
            
            return length;
        }

        void decodeSetBackgroundColor(SWFDecoder coder)
        {
            coder.beginObject("background", "SetBackgroundColor");
            
            int type = coder.scanWord(2, false) >> 6;
            int length = coder.scanWord(2, false) & 0x3F;
            
            coder.context[SWFDecoder.Type] = type;
            
            coder.logValue("type", new Integer(type), coder.getPointer(), 16);
            coder.logValue("length", new Integer(length), coder.getPointer(), 16);

            coder.setPointer(coder.getPointer()+16);

            if (length == 0x3F)
                length = coder.readWord("lengthExtended", 4, false);
            
            decodeColor("color", coder);
            coder.endObject();
        }

        void decodeShowFrame(SWFDecoder coder)
        {
            coder.beginObject("showFrame", "ShowFrame");
            decodeMovieObject(coder);
            coder.endObject();
        }   

        void decodeDoAction(SWFDecoder coder)
        {
            coder.beginObject("doAction", "DoAction");
            decodeMovieObject(coder);
            
            coder.beginArray("actions");
            
            while (decodeAction(coder) != 0);
            
           coder.endObject();
           coder.endObject();
        }

        void decodeFontInfo(SWFDecoder coder)
        {
            coder.beginObject("fontInfo", "FontInfo");
            int length = decodeMovieObject(coder);
            
            coder.readWord("identifier", 2, false);
            int nameLength = coder.readWord("nameLength", 1, false);
            coder.readString("name", nameLength);
            coder.readBits("reserved", 2, false);
            coder.readBool("isSmall");
            coder.readBool("isShiftJIS");
            coder.readBool("isANSI");
            coder.readBool("isItalic");
            coder.readBool("isBold");
            boolean containsWideCodes = coder.readBool("hasWideCodes"); 

            int bytesRead = 3 + nameLength + 1;

            coder.beginArray("codes");

            while (bytesRead < length)
            {
                coder.readWord("code", containsWideCodes ? 2 : 1, false);
                bytesRead += (containsWideCodes) ? 2 : 1;
            }
            coder.endObject();
            coder.endObject();
        }

        void decodeJPEGEncodingTable(SWFDecoder coder)
        {
            coder.beginObject("JPEGEncodingTable", "JPEGEncodingTable");
            int length = decodeMovieObject(coder);
            coder.readBytes("encodingTable", length);
            coder.endObject();
        }

        void decodePlaceObject(SWFDecoder coder)
        {
            int lengthRead = coder.getPointer();
            
            coder.beginObject("placeObject", "PlaceObject");
            int length = decodeMovieObject(coder);
            coder.readWord("identifier", 2, false); 
            coder.readWord("layer", 2, false);
            decodeCoordTransform("coordTransform", coder);
            
            lengthRead = (coder.getPointer() - lengthRead) >> 3;
            
            if (length > lengthRead)
                decodeColorTransform("colorTransform", coder);

            coder.endObject();
        }
        
        void decodeRemoveObject(SWFDecoder coder)
        {
            coder.beginObject("removeObject", "RemoveObject");
            decodeMovieObject(coder);
            coder.readWord("identifier", 2, false);
            coder.readWord("layer", 2, false);
            coder.endObject();
        }

        void decodeSoundStreamBlock(SWFDecoder coder)
        {
            coder.beginObject("soundStreamBlock", "SoundStreamBlock");
            int length = decodeMovieObject(coder);
            coder.readBytes("soundData", length); // 
            coder.endObject();
        }

        void decodeSoundStreamHead(SWFDecoder coder)
        {
            coder.beginObject("soundStreamHead", "SoundStreamHead");
            decodeMovieObject(coder);
            coder.readBits("reserved", 4, false);
            coder.readBits("playbackRate", 2, false); 
            coder.readBits("playbackSampleSize", 1, false);
            coder.readBits("playbackChannels", 1, false);
            int format = coder.readBits("format", 4, false);
            coder.readBits("streamRate", 2, false);
            coder.readBits("streamSampleSize", 1, false);
            coder.readBits("streamChannels", 1, false);
            coder.readWord("streamSampleCount", 2, false);
            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -