//以下回调如果图片信息未完成或头像失败则不会显示最终结果... //需要判断如果是图片信息的话需要等图片加载完.... //根据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); } }
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); } }
/// <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)); } }