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

📄 fsdefinebutton2.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public ArrayList getButtonEvents() { return buttonEvents; }

    /** Sets the button type.

        @param aType the type of button - push or menu.
        */
    public void setButtonType(int aType)
    {
        buttonType = aType;
    }

    /** Sets the array of button records defined for this button.

        @param anArray an array of FSButtonRecord objects.
        */
    public void setButtonRecords(ArrayList anArray)
    {
        buttonRecords = anArray;
    }

    /** 
     * Sets the array of button events defined for this button. If the object
     * contains encodedEvents then they will be deleted.
     * 
     * @param anArray and array of FSButtonEvent objects.
     */
    public void setButtonEvents(ArrayList anArray)
    {
        buttonEvents = anArray;
        
        if (encodedEvents != null)
            encodedEvents = null;
    }

    /** 
     * Set the encoded button event objects generated by the classes in the Translate 
     * framework. If the object already contains an array of button events objects
     * then they will be deleted.
     * 
     * @param bytes the array of encoded button events.
     */
    public void setEncodedEvents(byte[] bytes)
    {
        encodedEvents = bytes;
        buttonEvents = null;
    }

    public Object clone()
    {
        FSDefineButton2 anObject = (FSDefineButton2)super.clone();
        
        anObject.buttonRecords = new ArrayList();
            
        for (Iterator i = buttonRecords.iterator(); i.hasNext();)
            anObject.buttonRecords.add(((FSButton)i.next()).clone());

        if (buttonEvents != null)
        {
            anObject.buttonEvents = new ArrayList();
            
            for (Iterator i = buttonEvents.iterator(); i.hasNext();)
                anObject.buttonEvents.add(((FSButtonEvent)i.next()).clone());
        }
        else
        {
            anObject.encodedEvents = Transform.clone(encodedEvents);
        }
        return anObject;
    }

    public boolean equals(Object anObject)
    {
        boolean result = false;
        
        if (super.equals(anObject))
        {
            FSDefineButton2 typedObject = (FSDefineButton2)anObject;
            
            result = buttonType == typedObject.buttonType;

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

            if (buttonEvents != null)
                result = buttonEvents.equals(typedObject.buttonEvents);
            else
                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, "buttonRecords", buttonRecords, depth);

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

            buffer.append("}");
        }
    }

    public int length(FSCoder coder)
    {    
        super.length(coder);
    
        coder.context[FSCoder.TransparentColors] = 1;

        length += 3;
    
        for (Iterator buttonIterator = buttonRecords.iterator(); buttonIterator.hasNext();)
            length += ((FSTransformObject)buttonIterator.next()).length(coder);

        length += 1;
    
        if (buttonEvents != null)
        {
            for (Iterator eventIterator = buttonEvents.iterator(); eventIterator.hasNext();)
            {
                length += 2;
                length += ((FSTransformObject)eventIterator.next()).length(coder);
            }        
        }
        else
        {
            length += encodedEvents.length;
        }
        coder.context[FSCoder.TransparentColors] = 0;
        
        return length;
    }
    
    public void encode(FSCoder coder)
    {
        int offsetStart = 0;
        int offsetEnd = 0;
        int currentCursor = 0;
        
        super.encode(coder);
        
        coder.context[FSCoder.TransparentColors] = 1;

        coder.writeWord(buttonType, 1);
        
        offsetStart = coder.getPointer();
        coder.writeWord(0, 2);
    
        for (Iterator buttonIterator = buttonRecords.iterator(); buttonIterator.hasNext();) 
            ((FSTransformObject)buttonIterator.next()).encode(coder);
    
        coder.writeWord(0, 1);

        // Write actions offset
        
        currentCursor = coder.getPointer();
        offsetEnd = (currentCursor - offsetStart) >> 3;
        coder.setPointer(offsetStart);
        coder.writeWord(offsetEnd, 2);
        coder.setPointer(currentCursor);
    
        if (buttonEvents != null)
        {
            for (Iterator eventIterator = buttonEvents.iterator(); eventIterator.hasNext();)
            {
                FSButtonEvent anEvent = (FSButtonEvent)eventIterator.next();

                offsetStart = coder.getPointer();
                coder.writeWord(anEvent.length(coder) + 2, 2);
                anEvent.encode(coder);
            }
            // Write offset of zero for last Action Condition
        
            currentCursor = coder.getPointer();
            coder.setPointer(offsetStart);
            coder.writeWord(0, 2);
            coder.setPointer(currentCursor);
        }
        else
        {
            coder.writeBytes(encodedEvents);
        }
        coder.context[FSCoder.TransparentColors] = 0;
        coder.endObject(name());
    }
    
    public void decode(FSCoder coder)
    {
        int actionsOffset = 0;
        
        buttonEvents = new ArrayList();

        super.decode(coder);
        
        int start = coder.getPointer()-16;

        coder.context[FSCoder.TransparentColors] = 1;

        buttonType = coder.readWord(1, false);
        actionsOffset = coder.readWord(2, false);

        buttonRecords = new ArrayList();
        
        while (coder.scanWord(1, false) != 0)
            buttonRecords.add(new FSButton(coder));
            
        coder.readWord(1, false);

        if (actionsOffset != 0)
        {
            buttonEvents = new ArrayList();
                
            do {
                actionsOffset = coder.readWord(2, false);
                
                if (actionsOffset != 0)
                {
                    buttonEvents.add(new FSButtonEvent(coder, actionsOffset-2));
                }
                else
                {
                    buttonEvents.add(new FSButtonEvent(coder, length - ((coder.getPointer()-start) >>> 3)));
                }
            } while (actionsOffset != 0);

        }
        coder.context[FSCoder.TransparentColors] = 0;
        coder.endObject(name());
    }
}

⌨️ 快捷键说明

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