Exemplo n.º 1
0
    //以下回调如果图片信息未完成或头像失败则不会显示最终结果...
    //需要判断如果是图片信息的话需要等图片加载完....
    //根据DangmuViewDataConveter的sprite成员判断图片是否都加载完...
    #region Sprite_Load_Callback
    public void HeadCallBack(Sprite headSprite, uint textIndex)
    {
        //
        DangmuViewDataConveter dangmuData = null;

        if (false == _textDicCache.TryGetValue(textIndex, out dangmuData))
        {
            Log.error(this, "DangmuViewDataConveter not found,index: " + textIndex + " size:" + _textDicCache.Count);
            return;
        }

        dangmuData._head = headSprite;

        //must clear text after displaying the bullet...
        if (dangmuData.IsText())
        {
            Displayer.AddBullet(dangmuData.GetColoredText(), dangmuData._content, CheckShowBox(), GetDirection(), headSprite, null);
            CycleText(textIndex);
        }
        else if (dangmuData.IsPicture() && dangmuData._body != null)             //如果body加载完则创建弹幕...
        {
            Displayer.AddBullet(dangmuData.GetColoredText(), dangmuData._content, CheckShowBox(), GetDirection(), dangmuData._head, dangmuData._body);
            CycleText(textIndex);
        }
        else if (dangmuData.IsUnknown())
        {
            CycleText(textIndex);
        }
    }
Exemplo n.º 2
0
    public void Update()
    {
        if (!Displayer.Enable)
        {
            return;
        }

        timeCacl += Time.deltaTime;
        if (timeCacl < displayGapTime)
        {
            return;
        }

        timeCacl = 0.0f;

        //随机获取某一行....
        DangmuViewDataConveter dangmuData = dequeueFromDataQueue();

        if (null == dangmuData)
        {
            return;
        }
        _textDicCache.Add(counter, dangmuData);

        Log.debug(this, "Update: Begin to init dangmu:counter:" + counter + ":dangmuData._avatar:" + dangmuData._avatar);

        //在本类的函数中实现Sprite加载....
        //Sprite
        //Sprite messageBody = dangmuData._content;
        TextureLoader.Instance().StartSpriteLoad(dangmuData._avatar, counter,
                                                 new TextureLoader.DelegateSpriteCallMethod(this.HeadCallBack));

        if (dangmuData.IsPicture())
        {
            Log.debug(this, "Update: the content url is: " + dangmuData._content);
            TextureLoader.Instance().StartSpriteLoad(dangmuData._image, counter, BodyCallBack);
        }
        ++counter;

        //add later...
        //Displayer.AddBullet(dangmuData.GetColoredText(), CheckShowBox(), GetDirection(), dangmuData._avatar, messageBody);
    }
    //
    public void BodyCallBack(Sprite bodySprite, uint textIndex)
    {
        //
        DangmuViewDataConveter dangmuData = _textPool [(int)textIndex];

        if (null == dangmuData)
        {
            Debug.LogError("DangmuViewDataConveter not found,index: " + textIndex);
            return;
        }

        Debug.Log("BodyCallBack: bodySprite: " + bodySprite);
        Debug.Log("BodyCallBack: textIndex: " + textIndex);
        dangmuData._body = bodySprite;
        if (dangmuData.IsPicture() && dangmuData._head != null)
        {
            Displayer.AddBullet(dangmuData.GetColoredText(), dangmuData._content, CheckShowBox(), GetDirection(), dangmuData._head, dangmuData._body);
        }

        //NUll to od
    }
    //以下回调如果图片信息未完成或头像失败则不会显示最终结果...
    //需要判断如果是图片信息的话需要等图片加载完....
    //根据DangmuViewDataConveter的sprite成员判断图片是否都加载完...
    #region Sprite_Load_Callback
    public void HeadCallBack(Sprite headSprite, uint textIndex)
    {
        //
        DangmuViewDataConveter dangmuData = _textPool [(int)textIndex];

        if (null == dangmuData)
        {
            Debug.LogError("DangmuViewDataConveter not found,index: " + textIndex);
            return;
        }

        dangmuData._head = headSprite;
        if (dangmuData.IsText())
        {
            Displayer.AddBullet(dangmuData.GetColoredText(), dangmuData._content, CheckShowBox(), GetDirection(), headSprite, null);
        }
        else if (dangmuData.IsPicture() && dangmuData._head != null)             //如果body加载完则创建弹幕...
        {
            Displayer.AddBullet(dangmuData.GetColoredText(), dangmuData._content, CheckShowBox(), GetDirection(), dangmuData._head, dangmuData._body);
        }
    }
Exemplo n.º 5
0
    /// <summary>
    /// Bodies the call back.
    /// </summary>
    /// <param name="bodySprite">Body sprite.</param>
    /// <param name="textIndex">Text index.</param>
    public void BodyCallBack(Sprite bodySprite, uint textIndex)
    {
        //
        DangmuViewDataConveter dangmuData = null;

        if (false == _textDicCache.TryGetValue(textIndex, out dangmuData))
        {
            Log.warin(this, "DangmuViewDataConveter not found,index: " + textIndex + " size:" + _textDicCache.Count);
            return;
        }

        Log.debug(this, "BodyCallBack: bodySprite: " + bodySprite);
        Log.debug(this, "BodyCallBack: textIndex: " + textIndex);
        dangmuData._body = bodySprite;
        if (dangmuData.IsPicture() && dangmuData._head != null)
        {
            Displayer.AddBullet(dangmuData.GetColoredText(), dangmuData._content, GetDirection(), dangmuData._head, dangmuData._body);
            CycleText(textIndex);
        }
        //NUll to od
    }
    /// <summary>
    /// Starts the display bullet screen effect.
    /// 由于图片资源要下载,因此需要等图片下载完后回调....
    /// </summary>
    /// <returns>The display bullet screen effect.</returns>
    private IEnumerator StartDisplayBulletScreenEffect()
    {
        while (Displayer.Enable)
        {
            //随机获取某一行....
            int textIndex = Random.Range(0, _textPool.Count);
            DangmuViewDataConveter dangmuData = _textPool [textIndex];

            //在本类的函数中实现Sprite加载....
            //Sprite
            //Sprite messageBody = dangmuData._content;
            TextureLoader.Instance().StartSpriteLoad(dangmuData._avatar, (uint)textIndex, HeadCallBack);

            if (dangmuData.IsPicture())
            {
                Debug.Log("StartDisplayBulletScreenEffect: the content url is: " + dangmuData._content);
                TextureLoader.Instance().StartSpriteLoad(dangmuData._content, (uint)textIndex, BodyCallBack);
            }

            //add later...
            //Displayer.AddBullet(dangmuData.GetColoredText(), CheckShowBox(), GetDirection(), dangmuData._avatar, messageBody);
            yield return(new WaitForSeconds(1.0f));
        }
    }