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

📄 fsexceptionhandler.java

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

        for (Iterator i = finalActions.iterator(); i.hasNext();)
            anObject.finalActions.add(((FSActionObject)i.next()).clone());

        return anObject;
    }

    public boolean equals(Object anObject)
    {
        boolean result = false;
        
        if (super.equals(anObject))
        {
            FSExceptionHandler typedObject = (FSExceptionHandler)anObject;
            
            if (variable != null)
                result = variable.equals(typedObject.variable);
            else
                result = variable == typedObject.variable;
                
            result = result && register == typedObject.register;

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

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

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

    public void appendDescription(StringBuffer buffer, int depth)
    {
        buffer.append(name());
        
        if (depth > 0)
        {
            buffer.append(": { ");
            Transform.append(buffer, "variable", variable);        
            Transform.append(buffer, "register", register);
            Transform.append(buffer, "tryActions", tryActions, depth);
            Transform.append(buffer, "catchActions", catchActions, depth);
            Transform.append(buffer, "finalActions", finalActions, depth);
            buffer.append("}");
        }
    }

    public int length(FSCoder coder)
    { 
        super.length(coder);
        
        length += 7;
        length += (variable != null) ? coder.strlen(variable, true) : 1;
        
        for (Iterator i = tryActions.iterator(); i.hasNext();)
        {
            FSActionObject currentAction = (FSActionObject)i.next();
            
            length += currentAction.length(coder);
            length += (currentAction.getType() > 128) ? 3 : 1;
        }

        if (catchActions != null)
        {
            for (Iterator i = catchActions.iterator(); i.hasNext();)
            {
                FSActionObject currentAction = (FSActionObject)i.next();
                
                length += currentAction.length(coder);
                length += (currentAction.getType() > 128) ? 3 : 1;
            }
        }

        if (finalActions != null)
        {
            for (Iterator i = finalActions.iterator(); i.hasNext();)
            {
                FSActionObject currentAction = (FSActionObject)i.next();
                
                length += currentAction.length(coder);
                length += (currentAction.getType() > 128) ? 3 : 1;
            }
        }
        return length;
    }
        
    public void encode(FSCoder coder) 
    {
        super.encode(coder);

        coder.writeBits(0, 5);
        coder.writeBits(variable == null ? 1 : 0, 1);
        coder.writeBits(catchActions != null && catchActions.size() > 0 ? 1 : 0, 1);
        coder.writeBits(finalActions != null && finalActions.size() > 0 ? 1 : 0, 1);

        int tryLength = 0;
        
        for (Iterator i = tryActions.iterator(); i.hasNext();)
        {
            FSActionObject currentAction = (FSActionObject)i.next();
            
            tryLength += currentAction.getLength();
            tryLength += (currentAction.getType() > 128) ? 3 : 1;
        }
        
        coder.writeWord(tryLength, 2);

        int catchLength = 0;
        
        if (catchActions != null)
        {
            for (Iterator i = catchActions.iterator(); i.hasNext();)
            {
                FSActionObject currentAction = (FSActionObject)i.next();
                
                catchLength += currentAction.getLength();
                catchLength += (currentAction.getType() > 128) ? 3 : 1;
            }
        }
        
        coder.writeWord(catchLength, 2);

        int finalLength = 0;
        
        if (finalActions != null)
        {
            for (Iterator i = finalActions.iterator(); i.hasNext();)
            {
                FSActionObject currentAction = (FSActionObject)i.next();
                
                finalLength += currentAction.getLength();
                finalLength += (currentAction.getType() > 128) ? 3 : 1;
            }
        }
        
        coder.writeWord(finalLength, 2);

        if (variable != null)
            coder.writeString(variable);
        else
            coder.writeWord(register, 1);

        for (Iterator i=tryActions.iterator(); i.hasNext();)
        {
            FSActionObject action = (FSActionObject)i.next();
                
            int objStart = coder.getPointer();
            int start = coder.getPointer() + ((action.getType() > 128) ? 24 : 8);
            int next = start + (action.getLength() << 3);
            
            action.encode(coder);
            coder.setPointer(next);
            
            int delta = (coder.getPointer() - next) >> 3;
            
            if (delta != 0)
            {
                coder.context[FSCoder.CodingError] = 1;
                coder.context[FSCoder.TypeInError] = action.getType();
                coder.context[FSCoder.StartOfError] = objStart >>> 3;
                coder.context[FSCoder.ExpectedLength] = (next-objStart)>>>3;
                coder.context[FSCoder.Delta] = delta;
            }
        }

        if (catchActions != null)
        {
            for (Iterator i=catchActions.iterator(); i.hasNext();)
            {
                FSActionObject action = (FSActionObject)i.next();
                
                int objStart = coder.getPointer();
                int start = coder.getPointer() + ((action.getType() > 128) ? 24 : 8);
                int next = start + (action.getLength() << 3);
            
                action.encode(coder);
                coder.setPointer(next);
            
                int delta = (coder.getPointer() - next) >> 3;
            
                if (delta != 0)
                {
                    coder.context[FSCoder.CodingError] = 1;
                    coder.context[FSCoder.TypeInError] = action.getType();
                    coder.context[FSCoder.StartOfError] = objStart >>> 3;
                    coder.context[FSCoder.ExpectedLength] = (next-objStart)>>>3;
                    coder.context[FSCoder.Delta] = delta;
                }
            }
        }

        if (finalActions != null)
        {
            for (Iterator i=finalActions.iterator(); i.hasNext();)
            {
                FSActionObject action = (FSActionObject)i.next();
                
                int objStart = coder.getPointer();
                int start = coder.getPointer() + ((action.getType() > 128) ? 24 : 8);
                int next = start + (action.getLength() << 3);
            
                action.encode(coder);
                coder.setPointer(next);
            
                int delta = (coder.getPointer() - next) >> 3;
            
                if (delta != 0)
                {
                    coder.context[FSCoder.CodingError] = 1;
                    coder.context[FSCoder.TypeInError] = action.getType();
                    coder.context[FSCoder.StartOfError] = objStart >>> 3;
                    coder.context[FSCoder.ExpectedLength] = (next-objStart)>>>3;
                    coder.context[FSCoder.Delta] = delta;
                }
            }
        }

        coder.endObject(name());
    }
    
    public void decode(FSCoder coder)
    {
        boolean containsVariable = false;
        boolean containsCatch = false;
        boolean containsFinal = false;
        
        super.decode(coder);
        
        coder.readBits(5, false);
        containsVariable = coder.readBits(1, false) != 1;
        containsCatch = coder.readBits(1, false) == 1;
        containsFinal = coder.readBits(1, false) == 1;

        int tryLength = coder.readWord(2, false);
        int catchLength = coder.readWord(2, false);
        int finalLength = coder.readWord(2, false);

        tryActions = new ArrayList();
        
        if (containsCatch)
            catchActions = new ArrayList();
            
        if (containsFinal)
            finalActions = new ArrayList();

        /*
         * Both the variable name and register index are represented 
         * in Describe so pretend fields are consecutive.
         */
        if (containsVariable)
        {
            variable = coder.readString();
        }
        else
        {
            register = coder.readWord(1, false);
        }

        while (tryLength > 0)
        {
            FSActionObject anAction = FSMovie.decodeAction(coder);
            
            if (anAction != null)
            {
                tryLength -= anAction.getLength() + ((anAction.getType() >= 128) ? 3 : 1);
                tryActions.add(anAction);
            }
            else
            {
                coder.adjustPointer(8);
                tryLength =- 1;
            }
        }
        if (containsCatch)
        {
            while (catchLength > 0)
            {
                FSActionObject anAction = FSMovie.decodeAction(coder);
                
                if (anAction != null)
                {
                    catchLength -= anAction.getLength() + ((anAction.getType() >= 128) ? 3 : 1);
                    catchActions.add(anAction);
                }
                else
                {
                    coder.adjustPointer(8);
                    tryLength =- 1;
                }
            }
        }
        if (containsFinal)
        {
            while (finalLength > 0)
            {
                FSActionObject anAction = FSMovie.decodeAction(coder);
                
                if (anAction != null)
                {
                    finalLength -= anAction.getLength() + ((anAction.getType() >= 128) ? 3 : 1);
                    finalActions.add(anAction);
                }
                else
                {
                    coder.adjustPointer(8);
                    tryLength =- 1;
                }
            }
        }

        coder.endObject(name());
    }
}

⌨️ 快捷键说明

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