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

📄 fsmovie.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                identifier = ((FSDefineObject)currentObject).getIdentifier();
                break;
            case FSMovieObject.DefineMovieClip:
                currentObject = new FSDefineMovieClip(coder);
                identifier = ((FSDefineObject)currentObject).getIdentifier();
                break;
            case FSMovieObject.FrameLabel:
                currentObject = new FSFrameLabel(coder);
                break;
            case FSMovieObject.SoundStreamHead2:
                currentObject = new FSSoundStreamHead2(coder);
                break;
            case FSMovieObject.DefineMorphShape:
                currentObject = new FSDefineMorphShape(coder);
                identifier = ((FSDefineObject)currentObject).getIdentifier();
                break;
            case FSMovieObject.DefineFont2:
                currentObject = new FSDefineFont2(coder);
                identifier = ((FSDefineObject)currentObject).getIdentifier();
                break;
// Flash 4
            case FSMovieObject.PathsArePostscript:
                currentObject = FSPathsArePostscript.getInstance();
                coder.setPointer(next);
                break;
            case FSMovieObject.DefineTextField:
                currentObject = new FSDefineTextField(coder);
                identifier = ((FSDefineObject)currentObject).getIdentifier();
                break;
            case FSMovieObject.QuicktimeMovie:
                currentObject = new FSQuicktimeMovie(coder);
                break;
            case FSMovieObject.SerialNumber:
                currentObject = new FSSerialNumber(coder);
                break;
            case FSMovieObject.DefineBitsPtr:
                currentObject = new FSPointer(coder);
                break;
// Flash 5
            case FSMovieObject.EnableDebugger:
                currentObject = new FSEnableDebugger(coder);
                break;
            case FSMovieObject.Export:
                currentObject = new FSExport(coder);
                break;
            case FSMovieObject.Import:
                currentObject = new FSImport(coder);
                break;
// Flash 6
            case FSMovieObject.Initialize:
                currentObject = new FSInitialize(coder);
                break;
            case FSMovieObject.DefineVideo:
                currentObject = new FSDefineVideo(coder);
                identifier = ((FSDefineObject)currentObject).getIdentifier();
                break;
            case FSMovieObject.VideoFrame:
                currentObject = new FSVideoFrame(coder);
                break;
            case FSMovieObject.FontInfo2:
                currentObject = new FSFontInfo2(coder);
                break;
            case FSMovieObject.EnableDebugger2:
                currentObject = new FSEnableDebugger2(coder);
                break;
// Flash 7
            case FSMovieObject.LimitScript:
                currentObject = new FSLimitScript(coder);
                break;
            case FSMovieObject.TabOrder:
                currentObject = new FSTabOrder(coder);
                break;
            default:
                currentObject = new FSUnknownObject(coder);
                break;
        }

        int delta = (coder.getPointer() - next) >> 3;

        if (delta != 0)
        {
            coder.context[FSCoder.CodingError] = 1;
            coder.context[FSCoder.TypeInError] = currentObject.getType();
            coder.context[FSCoder.StartOfError] = objStart >>> 3;
            coder.context[FSCoder.ExpectedLength] = (next-objStart)>>>3;
            coder.context[FSCoder.Delta] = delta;
        }
        
        coder.setPointer(next);
        
        if (identifier != 0)
            coder.context[FSCoder.Identifier] = Math.max(coder.context[FSCoder.Identifier], identifier);
        
        return currentObject;
    }
        
    static FSActionObject decodeAction(FSCoder coder)
    {
        FSActionObject anAction = null;
        
        int objStart = coder.getPointer();
        int type = coder.scanWord(1, false);
        int length = 0;
        int start = coder.getPointer() + 8;
        int next = start;
    
        if (type == 0)
        {
            return anAction;
        }
        
        if (type > 128)
        {
            coder.adjustPointer(8);
            length = coder.scanWord(2, false);
            start = coder.getPointer() + 16;
            next = start + (length << 3);
            coder.adjustPointer(-8);
        }

        switch (type)
        {
            case FSAction.NextFrame:
            case FSAction.PrevFrame:
            case FSAction.Play:
            case FSAction.Stop:
            case FSAction.ToggleQuality:
            case FSAction.StopSounds:
                anAction = FSAction.getInstance(type);
                coder.adjustPointer(8);
                break;
            case FSActionObject.GetUrl:
                anAction = new FSGetUrl(coder);
                break;
// Flash 3            
            case FSActionObject.GotoFrame:
                anAction = new FSGotoFrame(coder);
                break;
// Flash 4
            case FSActionObject.GotoLabel:
                anAction = new FSGotoLabel(coder);
                break;
            case FSActionObject.SetTarget:
                anAction = new FSSetTarget(coder);
                break;
            case FSActionObject.WaitForFrame:
                anAction = new FSWaitForFrame(coder);
                break;
            case FSAction.IntegerAdd:
            case FSAction.Subtract:
            case FSAction.IntegerEquals:
            case FSAction.IntegerLess:
            case FSAction.Multiply:
            case FSAction.Divide:
            case FSAction.And:
            case FSAction.Or:
            case FSAction.Not:
            case FSAction.StringEquals:
            case FSAction.StringLength:
            case FSAction.StringExtract:
            case FSAction.Pop:
            case FSAction.ToInteger:
            case FSAction.GetVariable:
            case FSAction.SetVariable:
            case FSAction.SetTarget2:
            case FSAction.StringAdd:
            case FSAction.GetProperty:
            case FSAction.SetProperty:
            case FSAction.CloneSprite:
            case FSAction.RemoveSprite:
            case FSAction.Trace:
            case FSAction.StartDrag:
            case FSAction.EndDrag:
            case FSAction.StringLess:
            case FSAction.RandomNumber:
            case FSAction.MBStringLength:
            case FSAction.CharToAscii:
            case FSAction.AsciiToChar:
            case FSAction.GetTime:
            case FSAction.MBStringExtract:
            case FSAction.MBCharToAscii:
            case FSAction.MBAsciiToChar:
                anAction = FSAction.getInstance(type);
                coder.adjustPointer(8);
                break;
            case FSActionObject.Call:
                anAction = FSCall.getInstance();
                coder.setPointer(next);
                break;
            case FSActionObject.Push:
                anAction = new FSPush(coder);
                break;
            case FSActionObject.WaitForFrame2:
                anAction = new FSWaitForFrame2(coder);
                break;
            case FSActionObject.Jump:
                anAction = new FSJump(coder);
                break;
            case FSActionObject.If:
                anAction = new FSIf(coder);
                break;
            case FSActionObject.GetUrl2:
                anAction = new FSGetUrl2(coder);
                break;
            case FSActionObject.GotoFrame2:
                anAction = new FSGotoFrame2(coder);
                break;
// Flash 5  
            case FSAction.Add:
            case FSAction.Equals:
            case FSAction.Less:
            case FSAction.Modulo:
            case FSAction.Enumerate:
            case FSAction.Duplicate:
            case FSAction.Swap:
            case FSAction.ExecuteMethod:
            case FSAction.NewMethod:
            case FSAction.ExecuteFunction:
            case FSAction.GetAttribute:
            case FSAction.SetAttribute:
            case FSAction.Increment:
            case FSAction.Decrement:
            case FSAction.LogicalShiftLeft:
            case FSAction.LogicalShiftRight:
            case FSAction.ArithmeticShiftRight:
            case FSAction.BitwiseAnd:
            case FSAction.BitwiseOr:
            case FSAction.BitwiseXOr:
            case FSAction.NamedObject:
            case FSAction.NewArray:
            case FSAction.NewObject:
            case FSAction.DeleteVariable:
            case FSAction.Delete:
            case FSAction.Return:
            case FSAction.ToNumber:
            case FSAction.ToString:
            case FSAction.GetType:
            case FSAction.GetTarget:
            case FSAction.NewVariable:
            case FSAction.InitVariable:
                anAction = FSAction.getInstance(type);
                coder.adjustPointer(8);
                break;
            case FSActionObject.Table:
                anAction = new FSTable(coder);
                length = anAction.getLength();
                next = start + (length << 3);
                break;
            case FSActionObject.RegisterCopy:
                anAction = new FSRegisterCopy(coder);
                break;
            case FSActionObject.NewFunction:
                anAction = new FSNewFunction(coder);
                length = anAction.getLength();
                next = start + (length << 3);
                break;
            case FSActionObject.With:
                anAction = new FSWith(coder);
                length = anAction.getLength();
                next = start + (length << 3);
                break;
// Flash 6
            case FSAction.InstanceOf:
            case FSAction.EnumerateObject:
            case FSAction.Greater:
            case FSAction.StringGreater:
            case FSAction.StrictEquals:
                anAction = FSAction.getInstance(type);
                coder.adjustPointer(8);
                break;
// Flash 7
            case FSAction.Cast:
            case FSAction.Extends:
            case FSAction.Implements:
            case FSAction.Throw:
                anAction = FSAction.getInstance(type);
                coder.adjustPointer(8);
                break;
            case FSActionObject.ExceptionHandler:
                anAction = new FSExceptionHandler(coder);
            case FSActionObject.NewFunction2:
                anAction = new FSNewFunction2(coder);
                length = anAction.getLength();
                next = start + (length << 3);
                break;
            default:
                anAction = new FSUnknownAction(coder);
                break;
        }
            
        int delta = (coder.getPointer() - next) >> 3;

        if (delta != 0)
        {
            coder.context[FSCoder.CodingError] = 1;
            coder.context[FSCoder.TypeInError] = anAction.getType();
            coder.context[FSCoder.StartOfError] = objStart >>> 3;
            coder.context[FSCoder.ExpectedLength] = (next-objStart)>>>3;
            coder.context[FSCoder.Delta] = delta;
        }

        coder.setPointer(next);

        return anAction;
    }
    
    static ArrayList decodeActions(byte[] encodedActions)
    {
        FSCoder coder = new FSCoder(FSCoder.LITTLE_ENDIAN, encodedActions);
        
        return decodeActions(coder);
    }
    
    static ArrayList decodeActions(FSCoder coder)
    {
        FSActionObject action = null;
        
        ArrayList array = new ArrayList();
    
        while ((action = FSMovie.decodeAction(coder)) != null) {
            array.add(action);
        }

⌨️ 快捷键说明

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