Exemplo n.º 1
0
 /// <summary>
 /// Creates a new <see cref="DefineButtonTag"/> instance.
 /// </summary>
 /// <param name="buttonId">Button id.</param>
 /// <param name="characters">Characters.</param>
 /// <param name="actions">Actions.</param>
 public DefineButtonTag(ushort buttonId, ButtonRecordCollection characters, byte[] actions)
 {
     this.buttonId   = buttonId;
     this.characters = characters;
     this.actions    = actions;
     _tagCode        = (int)TagCodeEnum.DefineButton;
 }
Exemplo n.º 2
0
        /// <summary>
        /// see <see cref="SwfDotNet.IO.Tags.BaseTag">base class</see>
        /// </summary>
        public override void ReadData(byte version, BufferedBinaryReader binaryReader)
        {
            RecordHeader rh = new RecordHeader();

            rh.ReadData(binaryReader);

            buttonId   = binaryReader.ReadUInt16();
            characters = new ButtonRecordCollection();

            bool characterEndFlag = false;

            while (!characterEndFlag)
            {
                byte first = binaryReader.ReadByte();
                if (first == 0)
                {
                    characterEndFlag = true;
                }
                else
                {
                    ButtonRecord buttRecord = new ButtonRecord();
                    buttRecord.ReadData(binaryReader, first, TagCodeEnum.DefineButton);
                    characters.Add(buttRecord);
                }
            }

            int offset = 2;

            foreach (ButtonRecord butRec in characters)
            {
                offset += butRec.GetSizeOf();
            }

            int lenght = System.Convert.ToInt32(rh.TagLength) - offset - 1;

            //-1 for the ActionEndFlag
            actions = binaryReader.ReadBytes(lenght);
            //Read ActionEndFlag
            binaryReader.ReadByte();
        }
Exemplo n.º 3
0
 /// <summary>
 /// Inits this instance.
 /// </summary>
 private void Init()
 {
     characters = new ButtonRecordCollection();
     _tagCode   = (int)TagCodeEnum.DefineButton2;
 }
Exemplo n.º 4
0
        /// <summary>
        /// see <see cref="SwfDotNet.IO.Tags.BaseTag">base class</see>
        /// </summary>
        public override void ReadData(byte version, BufferedBinaryReader binaryReader)
        {
            RecordHeader rh = new RecordHeader();

            rh.ReadData(binaryReader);

            long startPosition = binaryReader.BaseStream.Position;

            buttonId = binaryReader.ReadUInt16();
            binaryReader.ReadUBits(7); //reserved
            trackAsMenu = binaryReader.ReadBoolean();

            long startPos = binaryReader.BaseStream.Position;

            actionOffset = binaryReader.ReadUInt16();

            if (characters == null)
            {
                characters = new ButtonRecordCollection();
            }
            else
            {
                characters.Clear();
            }

            bool characterEndFlag = false;

            while (!characterEndFlag)
            {
                byte first = binaryReader.ReadByte();
                if (first == 0)
                {
                    characterEndFlag = true;
                }
                else
                {
                    ButtonRecord buttRecord = new ButtonRecord();
                    buttRecord.ReadData(binaryReader, first, TagCodeEnum.DefineButton2);
                    characters.Add(buttRecord);
                }
            }

            long curr = startPos + actionOffset;

            actions = new ButtonCondactionCollection();
            bool lastCondAction = false;

            if (actionOffset == 0)
            {
                lastCondAction = true;
            }

            while (!lastCondAction)
            {
                long   readedBytes    = binaryReader.BaseStream.Position - startPosition;
                ushort condActionSize = binaryReader.ReadUInt16();
                if (condActionSize == 0)
                {
                    lastCondAction = true;
                    condActionSize = (ushort)(rh.TagLength - readedBytes);
                }
                ButtonCondaction buttCond = new ButtonCondaction();
                buttCond.ReadData(binaryReader, condActionSize);
                actions.Add(buttCond);
            }
        }