Ejemplo n.º 1
0
        public bool Update(int nDeltaTime) // usec
        {
            lock (lockObj)
            {
                long lTime    = DX.GetNowHiPerformanceCount();
                int  fontsize = DX.GetFontSizeToHandle(nFontHandle);
                for (int i = list.Count - 1; i >= 0; i--)
                {
                    TickerElement te = (TickerElement)list[i];

                    // 新規追加か?
                    if (te.lStartTime < 0)
                    {
                        te.lStartTime = lTime;
                        te.xe         = xInitPos - DX.GetDrawStringWidthToHandle(te.sMessage, te.sMessage.Length, nFontHandle) - nXOffset;
                    }

                    float fDelta = (float)nDeltaTime / 16666.6F;
                    DX.DrawStringToHandle(te.x, te.y, te.sMessage, te.uiColor, nFontHandle);
                    switch (te.nDirection)
                    {
                    case -1:
                        if (te.x > te.xe)
                        {
                            te.x -= (int)(fDelta * fSpeed);
                            if (te.x <= te.xe)
                            {
                                te.x          = te.xe;
                                te.nDirection = 0;
                            }
                        }
                        if (te.y + fontsize < 0)
                        {
                            te.nDirection = 1;
                        }
                        break;

                    case 0:
                        if ((lTime - te.lStartTime > nExpireTime) || (te.y + fontsize < 0))
                        {
                            te.nDirection = 1;
                        }
                        break;

                    case 1:
                        if (te.x < xInitPos)
                        {
                            te.x += (int)(fDelta * fSpeed) * 2;
                        }
                        if ((te.x >= xInitPos) || (te.y + fontsize < 0))
                        {
                            list.RemoveAt(i);
                        }
                        break;
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
 public void DeleteAll(bool bDeleteJustNow = false)
 {
     lock (lockObj)
     {
         if (bDeleteJustNow == true)
         {
             list.Clear();
         }
         else
         {
             for (int i = 0; i < list.Count; i++)
             {
                 TickerElement te = (TickerElement)list[i];
                 te.nDirection = 1;
             }
         }
     }
 }
Ejemplo n.º 3
0
        public bool Add(string sMessage, uint uiColor)
        {
            lock (lockObj)
            {
                TickerElement te = new TickerElement();
                te.x          = xInitPos;
                te.y          = yInitPos;
                te.sMessage   = sMessage;
                te.uiColor    = uiColor;
                te.nDirection = -1;
                te.lStartTime = -1;
                te.xe         = -999;

                list.Add(te);
                for (int j = 0; j < list.Count - 1; j++)
                {
                    TickerElement te2 = (TickerElement)list[j];
                    te2.y -= nFontSize;
                }
            }

            return(true);
        }