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

📄 fsplaceobject2.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        */
    public void setLayer(int aLayer)
    {
        layer = aLayer;
    }

    /** Sets the identifier of the object.

        @param anIdentifier the identifier of a new object to be displayed.
        */
    public void setIdentifier(int anIdentifier)
    {
        identifier = anIdentifier;
    }

    /** Sets the coordinate transform that defines the position where the object will be displayed. The argument may be null if the location of the object is not being changed.

        @param aTransform an FSCoordTransform object that will be applied to the object displayed.
        */
    public void setTransform(FSCoordTransform aTransform)
    {
        transform = aTransform;
    }

    /** Sets the colour transform that defines the colour effects applied to the object. The argument may be null if the color of the object is not being changed.

        @param aTransform an FSColorTransform object that will be applied to the object displayed.
        */
    public void setColorTransform(FSColorTransform aTransform)
    {
        colorTransform = aTransform;
    }

    /** Sets point of the morphing process for a morph shape in the range 0..65535. May be set to zero if the shape being placed is not being morphed. The value may be set to Transform.VALUE_NOT_SET if the shape is not being morphed.

        @param aNumber the progress in the morphing process.
        */
    public void setRatio(float aNumber)
    {
        ratio = aNumber;
    }

    /** 
     * Sets the number of layers that this object will mask. May be set to zero 
     * if the shape being placed does not define a clipping area.

        @param aNumber the number of layers clipped.
        */
    public void setClippingDepth(int aNumber)
    {
        clippingDepth = aNumber;
    }

    /** Set the name of an object to be displayed. If a shape is not being assigned a name then setting the argument to null will omit the attribute when the object is encoded.

        @param aString the name assigned to the object.
        */
    public void setName(String aString)
    {
        name = aString;
    }

    public Object clone()
    {
        FSPlaceObject2 anObject = (FSPlaceObject2)super.clone();
        
        anObject.transform = (transform != null) ? (FSCoordTransform)transform.clone() : null;
        anObject.colorTransform = (colorTransform != null) ? (FSColorTransform)colorTransform.clone() : null;
        
        if (clipEvents != null)
        {
            anObject.clipEvents = new ArrayList();
            
            for (Iterator i = clipEvents.iterator(); i.hasNext();)
                anObject.clipEvents.add(((FSClipEvent)i.next()).clone());
        }
        else
        {
            anObject.encodedEvents = Transform.clone(encodedEvents);
        }
        return anObject;
    }

    public boolean equals(Object anObject)
    {
        boolean result = false;
        
        if (super.equals(anObject))
        {
            FSPlaceObject2 typedObject = (FSPlaceObject2)anObject;
            
            result = place == typedObject.place;
            result = result && layer == typedObject.layer;
            result = result && identifier == typedObject.identifier;
           
            if (transform == null)
                result = result && (typedObject.transform == null);
            else
                result = result && transform.equals(typedObject.transform);

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

            result = result && ratio == typedObject.ratio;
            result = result && clippingDepth == typedObject.clippingDepth;

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

            if (clipEvents != null)
                result = result && clipEvents.equals(typedObject.clipEvents);
            else
                result = result && Transform.equals(encodedEvents, typedObject.encodedEvents);
        }
        return result;
    }

    public void appendDescription(StringBuffer buffer, int depth)
    {
        buffer.append(name());
        
        if (depth > 0)
        {
            buffer.append(": { ");
            Transform.append(buffer, "place", place);
            Transform.append(buffer, "layer", layer);
            Transform.append(buffer, "identifier", identifier);
            Transform.append(buffer, "transform", transform, depth);
            Transform.append(buffer, "colorTransform", colorTransform, depth);
            Transform.append(buffer, "ratio", ratio);
            Transform.append(buffer, "clippingDepth", clippingDepth);
            Transform.append(buffer, "name", name);

            if (clipEvents != null)
                Transform.append(buffer, "clipEvents", clipEvents, depth);
            else
                buffer.append("clipEvents = <data>; ");

            buffer.append("}");
        }
    }

    public int length(FSCoder coder)
    {
        super.length(coder);

        coder.context[FSCoder.TransparentColors] = 1;

        length += 3;
        length += (place == 2 || place == 3) ? 2 : 0;
        length += (containsTransform()) ? transform.length(coder) : 0;
        length += (containsColorTransform(coder)) ? colorTransform.length(coder) : 0;
        length += (containsRatio()) ? 2 : 0;
        length += (containsClippingDepth()) ? 2 : 0;
        
        length += containsName() ? coder.strlen(name, true) : 0;

        if (containsClipEvents())
        {
            if (clipEvents != null)
            {
                int eventSize = coder.context[FSCoder.Version] > 5 ? 4 : 2;
            
                length += 2 + eventSize;
            
                for (Iterator i = clipEvents.iterator(); i.hasNext();)
                    length += ((FSClipEvent)i.next()).length(coder);
                
                length += eventSize;
            }
            else
            {
                length += encodedEvents.length;
            }
        }
        coder.context[FSCoder.TransparentColors] = 0;
        
        return length;
    }
    
    public void encode(FSCoder coder)
    {
        super.encode(coder);
        
        coder.context[FSCoder.TransparentColors] = 1;

        coder.writeBits(containsClipEvents() ? 1 : 0, 1);
        coder.writeBits(containsClippingDepth() ? 1 : 0, 1);
        coder.writeBits(containsName() ? 1 : 0, 1);
        coder.writeBits(containsRatio() ? 1 : 0, 1);
        coder.writeBits(containsColorTransform(coder) ? 1 : 0, 1);
        coder.writeBits(containsTransform() ? 1 : 0, 1);
        coder.writeBits(place, 2);
        coder.writeWord(layer, 2);
        
        if (place == 2 || place == 3)
            coder.writeWord(identifier, 2);
        if (containsTransform())
            transform.encode(coder);
        if (containsColorTransform(coder))
            colorTransform.encode(coder);
        if (containsRatio())
            coder.writeWord((int)(ratio * 65535.0f), 2);
            
//        if (coder.context[FSCoder.Version] > 5)
//        {
            if (containsName())
            {
                coder.writeString(name);
                coder.writeWord(0, 1);
            }
    
            if (containsClippingDepth())
                coder.writeWord(clippingDepth, 2);
/*        }
        else
        {
            if (containsClippingDepth())
                coder.writeWord(clippingDepth+1, 2);

            if (containsName())
            {
                coder.writeString(name);
                coder.writeWord(0, 1);
            }
        }
*/
        if (containsClipEvents())
        {
            if (clipEvents != null)
            {
                int eventSize = coder.context[FSCoder.Version] > 5 ? 4 : 2;
                int eventMask = 0;
            
                coder.writeWord(0, 2);

                for (Iterator i = clipEvents.iterator(); i.hasNext();)
                    eventMask |= ((FSClipEvent)i.next()).getEvent();
           
                coder.writeWord(eventMask, eventSize);

                for (Iterator i = clipEvents.iterator(); i.hasNext();)
                    ((FSTransformObject)i.next()).encode(coder);
                
                coder.writeWord(0, eventSize);
            }
            else
            {
                coder.writeBytes(encodedEvents);
            }
        }
        coder.context[FSCoder.TransparentColors] = 0;
        coder.endObject(name());
    }
    
    public void decode(FSCoder coder)
    {
        boolean containsClipEvents = false;
        boolean containsClippingDepth = false;
        boolean containsName = false;
        boolean containsRatio = false;
        boolean containsColorTransform = false;
        boolean containsTransform = false;
       
        super.decode(coder);

        coder.context[FSCoder.TransparentColors] = 1;

        containsClipEvents = coder.readBits(1, false) != 0 ? true : false;
        containsClippingDepth = coder.readBits(1, false) != 0 ? true : false;
        containsName = coder.readBits(1, false) != 0 ? true : false;
        containsRatio = coder.readBits(1, false) != 0 ? true : false;
        containsColorTransform = coder.readBits(1, false) != 0 ? true : false;
        containsTransform = coder.readBits(1, false) != 0 ? true : false;
        place = coder.readBits(2, false);
        layer = coder.readWord(2, false);
        
        if (place == 2 || place == 3)
            identifier = coder.readWord(2, false);
            
        if (containsTransform)
            transform = new FSCoordTransform(coder);

        if (containsColorTransform)
            colorTransform = new FSColorTransform(coder);

        if (containsRatio)
            ratio = coder.readWord(2, false) / 65535.0f;

        if (containsName)
            name = coder.readString();

        if (containsClippingDepth)
            clippingDepth = coder.readWord(2, false);

        if (containsClipEvents)
        {
            int eventSize = coder.context[FSCoder.Version] > 5 ? 4 : 2;
            clipEvents = new ArrayList();
            
            coder.readWord(2, false);
            coder.readWord(eventSize, false);

            while (coder.scanWord(eventSize, false) != 0)
                clipEvents.add(new FSClipEvent(coder));
 
            coder.readWord(eventSize, false);
        }
        coder.context[FSCoder.TransparentColors] = 0;
        coder.endObject(name());
    }

    private boolean containsTransform()
    {
        return transform != null;
    }

    private boolean containsColorTransform(FSCoder coder)
    {
        return colorTransform != null;
    }

    private boolean containsClipEvents()
    {
        return (clipEvents != null && clipEvents.size() > 0) || encodedEvents != null;
    }

    private boolean containsClippingDepth()
    {
        return clippingDepth > 0;
    }

    private boolean containsName()
    {
        return name != null && name.length() > 0;
    }

    private boolean containsRatio()
    {
        return ratio >= 0.0;
    }
}

⌨️ 快捷键说明

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