Exemple #1
0
        /// <summary>
        ///  Start PlayList
        /// </summary>
        private void StartPlay()
        {
            EventArgs ca      = new EventArgs();
            int       RunTime = 0;

            curNum    = 0;
            PlayState = PlayState.Next;
            while (curNum >= 0 && curNum < dsArr.Length)
            {
                if (PlayState == PlayState.Stop)
                {
                    if (des != null)
                    {
                        des.Cancel();
                    }
                    break;
                }

                if (PlayState == PlayState.Next)
                {
                    dsArr[curNum].Sort(new SortComparer <Layer>("Level", false));
                    des            = new DESCombine(DESConsts.FPS, DESConsts.BitCount, hWin.Width, hWin.Height, dsArr[curNum]);
                    DynamicTextDS  = dsArr[curNum].FindAll(DynamicTextLayer);
                    des.Completed += new EventHandler(Completed);
                    pVideo         = new DESVideoCallBack(RunTime, m_PlayBar, m_MediaTime);
                    des.RenderToFrame(hWin, pVideo, null, DynamicTextDS, DsRect.FromRectangle(hWin.ClientRectangle), 0, dsArr[curNum].PlayLength);
                    des.StartRendering();
                    PlayState  = PlayState.Run;
                    PlayLength = DESHelper.FormatTime(dsArr[curNum].PlayLength);
                }
                else
                {
                    if (PlayState == PlayState.Run)
                    {
                        curLength += 1000000;
                    }
                    if (curLength >= PlayLength)
                    {
                        RunTime += (int)dsArr[curNum].PlayLength;
                        curNum++;
                        curLength = 0;
                        PlayState = PlayState.Next;
                        if (curNum == dsArr.Length)
                        {
                            PlayState = PlayState.Stop;
                        }
                        if (des != null)
                        {
                            des.Stop();
                        }
                    }
                    Thread.Sleep(100);
                }
            }

            if (des != null)
            {
                des.Cancel();
            }
            hWin.Refresh();
            if (PlayListCompleted != null)
            {
                PlayListCompleted(this, ca);
            }
        }