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

📄 fsdefineshape2.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

        @param anArray set the line styles for the shape.
        */
    public void setLineStyles(ArrayList anArray)
    {
        lineStyles = anArray;
    }

    /** Sets the shape.

        @param aShape set the shape to be drawn.
        */
    public void setShape(FSShape aShape)
    {
        shape = aShape;
    }

    public Object clone()
    {
        FSDefineShape2 anObject = (FSDefineShape2)super.clone();
        
        anObject.bounds = (bounds != null) ? (FSBounds)bounds.clone() : null;

        anObject.fillStyles = new ArrayList();
            
        for (Iterator i = fillStyles.iterator(); i.hasNext();)
            anObject.fillStyles.add(((FSFillStyle)i.next()).clone());

        anObject.lineStyles = new ArrayList();
            
        for (Iterator i = lineStyles.iterator(); i.hasNext();)
            anObject.lineStyles.add(((FSLineStyle)i.next()).clone());

         anObject.shape = (shape != null) ? (FSShape)shape.clone() : null;
        
        return anObject;
    }

    public boolean equals(Object anObject)
    {
        boolean result = false;
        
        if (super.equals(anObject))
        {
            FSDefineShape2 typedObject = (FSDefineShape2)anObject;
            
            if (bounds != null)
                result = bounds.equals(typedObject.bounds);
            else
                result = bounds == typedObject.bounds;

            if (fillStyles != null)
                result = result && fillStyles.equals(typedObject.fillStyles);
            else
                result = result && fillStyles == typedObject.fillStyles;

            if (lineStyles != null)
                result = result && lineStyles.equals(typedObject.lineStyles);
            else
                result = result && lineStyles == typedObject.lineStyles;

            if (shape != null)
                result = result && shape.equals(typedObject.shape);
            else
                result = result && shape == typedObject.shape;
        }
        return result;
    }

    public void appendDescription(StringBuffer buffer, int depth)
    {
        buffer.append(name());
        
        if (depth > 0)
        {
            buffer.append(": { ");
            Transform.append(buffer, "identifier", identifier);
            Transform.append(buffer, "bounds", bounds, depth);
            Transform.append(buffer, "fillStyles", fillStyles, depth);
            Transform.append(buffer, "lineStyles", lineStyles, depth);
            Transform.append(buffer, "shape", shape, depth);
            buffer.append("}");
        }
    }

    public int length(FSCoder coder)
    {
        int numberOfFillBits = FSCoder.size(fillStyles.size(), false);
        int numberOfLineBits = FSCoder.size(lineStyles.size(), false);
        
        super.length(coder);
    
        length += bounds.length(coder);
        length += (fillStyles.size() >= 255) ? 3 : 1;
    
        for (Iterator styleIterator = fillStyles.iterator(); styleIterator.hasNext();) 
            length += ((FSTransformObject)styleIterator.next()).length(coder);
        
        length += (lineStyles.size() >= 255) ? 3 : 1;
    
        for (Iterator styleIterator = lineStyles.iterator(); styleIterator.hasNext();) 
            length += ((FSTransformObject)styleIterator.next()).length(coder);
    
        coder.context[FSCoder.ArrayCountExtended] = 1;
        coder.context[FSCoder.NumberOfFillBits] = numberOfFillBits;
        coder.context[FSCoder.NumberOfLineBits] = numberOfLineBits;
    
        length += shape.length(coder);
    
        coder.context[FSCoder.ArrayCountExtended] = 0;
        coder.context[FSCoder.NumberOfFillBits] = 0;
        coder.context[FSCoder.NumberOfLineBits] = 0;

        return length;
    }
    
    public void encode(FSCoder coder)
    {
        int numberOfFillBits = FSCoder.size(fillStyles.size(), false);
        int numberOfLineBits = FSCoder.size(lineStyles.size(), false);
        
        super.encode(coder);

        bounds.encode(coder);
        
        if (fillStyles.size() >= 255)
        {
            coder.writeWord(0xFF, 1);
            coder.writeWord(fillStyles.size(), 2);
        }
        else
        {
            coder.writeWord(fillStyles.size(), 1);
        }
    
        for (Iterator styleIterator = fillStyles.iterator(); styleIterator.hasNext();) 
            ((FSTransformObject)styleIterator.next()).encode(coder);
    
        if (lineStyles.size() >= 255)
        {
            coder.writeWord(0xFF, 1);
            coder.writeWord(lineStyles.size(), 2);
        }
        else
        {
            coder.writeWord(lineStyles.size(), 1);
        }
                    
        for (Iterator styleIterator = lineStyles.iterator(); styleIterator.hasNext();) 
            ((FSTransformObject)styleIterator.next()).encode(coder);
    
        coder.context[FSCoder.ArrayCountExtended] = 1;
        coder.context[FSCoder.NumberOfFillBits] = numberOfFillBits;
        coder.context[FSCoder.NumberOfLineBits] = numberOfLineBits;

        shape.encode(coder);

        coder.context[FSCoder.ArrayCountExtended] = 0;
        coder.context[FSCoder.NumberOfFillBits] = 0;
        coder.context[FSCoder.NumberOfLineBits] = 0;

        coder.endObject(name());
    }
    
    public void decode(FSCoder coder)
    {
        int fillStyleCount = 0;
        int lineStyleCount = 0;
        
        super.decode(coder);

        int start = coder.getPointer()-16; // account for identifier

        bounds = new FSBounds(coder);
        fillStyleCount = coder.readWord(1, false);

        if (fillStyleCount == 0xFF)
            fillStyleCount = coder.readWord(2, false);
            
        fillStyles = new ArrayList(fillStyleCount);

        fillStyles = new ArrayList();

        for (int i=0; i<fillStyleCount; i++)
        {
            switch (coder.scanWord(1, false))
            {
                case FSFillStyle.Solid:
                    fillStyles.add(new FSSolidFill(coder));
                    break;
                case FSFillStyle.Linear:
                    fillStyles.add(new FSGradientFill(coder));
                    break;
                case FSFillStyle.Radial:
                    fillStyles.add(new FSGradientFill(coder));
                    break;
                case FSFillStyle.Tiled:
                    fillStyles.add(new FSBitmapFill(coder));
                    break;
                case FSFillStyle.Clipped:
                    fillStyles.add(new FSBitmapFill(coder));
                    break;
                case FSFillStyle.Unsmoothed_Tiled:
                    fillStyles.add(new FSBitmapFill(coder));
                    break;
                case FSFillStyle.Unsmoothed_Clipped:
                    fillStyles.add(new FSBitmapFill(coder));
                    break;
                default:
                    break;    
            }        
        }
        
        lineStyleCount = coder.readWord(1, false);

        if (lineStyleCount == 0xFF)
            lineStyleCount = coder.readWord(2, false);

        lineStyles = new ArrayList(lineStyleCount);
        
        for (int i=0; i<lineStyleCount; i++)
            lineStyles.add(new FSSolidLine(coder));

        coder.context[FSCoder.ArrayCountExtended] = 1;

        int bytesDecoded = (coder.getPointer()-start) >> 3;

        if (coder.context[FSCoder.DecodeShapes] == 1)
            shape = new FSShape(coder);
        else
            shape = new FSShape(coder, length-bytesDecoded);

        coder.context[FSCoder.ArrayCountExtended] = 0;

        coder.endObject(name());
    }
}

⌨️ 快捷键说明

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