예제 #1
0
        internal DefineButton(SwfReader r)
            : base(TagType.DefineButton)
        {
            ButtonId = r.GetByte();
            while (r.PeekByte() != 0)
            {
                Characters.Add(new ButtonRecord(r, TagType.DefineButton));
            }
            r.GetByte();// 0, end ButtonRecords

            uint start = r.Position;

            ActionRecords          = new ActionRecords(r, int.MaxValue);
            ActionRecords.CodeSize = r.Position - start;
        }
예제 #2
0
        internal DefineTextTag(SwfReader r, bool useAlpha)
            : base(TagType.DefineText)
        {
            if (useAlpha)
            {
                tagType = TagType.DefineText2;
            }
            CharacterId = r.GetUI16();
            TextBounds  = new Rect(r);
            TextMatrix  = new Matrix(r);
            glyphBits   = (uint)r.GetByte();
            advanceBits = (uint)r.GetByte();

            while (r.PeekByte() != 0x00)
            {
                TextRecords.Add(new TextRecord(r, glyphBits, advanceBits, useAlpha));
            }
            byte end = r.GetByte();
        }
예제 #3
0
        internal DefineButton2(SwfReader r)
            : base(TagType.DefineButton2)
        {
            ButtonId = r.GetUI16();
            r.GetBits(7);
            TrackAsMenu  = r.GetBit();
            ActionOffset = r.GetUI16();

            while (r.PeekByte() != 0)
            {
                Characters.Add(new ButtonRecord(r, TagType.DefineButton2));
            }
            r.GetByte();// 0, end ButtonRecords

            if (ActionOffset > 0)
            {
                ButtonCondAction bca;
                do
                {
                    bca = new ButtonCondAction(r);
                    ButtonCondActions.Add(bca);
                }while (bca.CondActionSize > 0);
            }
        }