//以下回调如果图片信息未完成或头像失败则不会显示最终结果... //需要判断如果是图片信息的话需要等图片加载完.... //根据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 List <DangmuViewDataConveter> _textPool; /*= new List<DangmuViewDataConveter>() { * {20, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "hello world 1数据接口接口数据库", 1, "1513326199"}, * {21, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/IN2icsuhGqEdGribiaXf6oqCWLZAh0V6Z5UiacN6sbGyzXibjLomY5It6CSGia9190XAMPTB7NkD0jc4pTXZ9r9Dw5PQ/0", * "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513308112"}, * {22, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "每一步风起云涌...", 1, "1513326199"}, * {23, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/IN2icsuhGqEdGribiaXf6oqCWLZAh0V6Z5UiacN6sbGyzXibjLomY5It6CSGia9190XAMPTB7NkD0jc4pTXZ9r9Dw5PQ/0", * "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513308112"}, * {24, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "在风雨之中你追我逐...", 1, "1513326199"}, * {25, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "把风花雪月留在心中...", 1, "1513326199"}, * {26, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "剩下度追忆是不舍不倦...", 1, "1513326199"}, * {27, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "长夜里没法睡男儿无泪...", 1, "1513326199"}, * {28, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/IN2icsuhGqEdGribiaXf6oqCWLZAh0V6Z5UiacN6sbGyzXibjLomY5It6CSGia9190XAMPTB7NkD0jc4pTXZ9r9Dw5PQ/0", * "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513308112"}, * {29, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "问大地慈爱迟迟短缺是深刻思考...", 1, "1513326199"} * };*/ void constructTextPool() { _textPool = new List <DangmuViewDataConveter> (); DangmuViewDataConveter dataTemp = new DangmuViewDataConveter(20, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "hello world 1数据接口接口数据库", 1, "1513326199"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(21, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/IN2icsuhGqEdGribiaXf6oqCWLZAh0V6Z5UiacN6sbGyzXibjLomY5It6CSGia9190XAMPTB7NkD0jc4pTXZ9r9Dw5PQ/0", "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513308112"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(22, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "每一步风起云涌...", 1, "1513326199"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(23, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/IN2icsuhGqEdGribiaXf6oqCWLZAh0V6Z5UiacN6sbGyzXibjLomY5It6CSGia9190XAMPTB7NkD0jc4pTXZ9r9Dw5PQ/0", "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513308112"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(24, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "在风雨之中你追我逐...", 1, "1513326199"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(25, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513326199"); //"把风花雪月留在心中...".. _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(26, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "剩下度追忆是不舍不倦...", 1, "1513326199"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(27, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513326199"); //"长夜里没法睡男儿无泪...".. _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(28, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", "http://wx.qlogo.cn/mmopen/vi_32/IN2icsuhGqEdGribiaXf6oqCWLZAh0V6Z5UiacN6sbGyzXibjLomY5It6CSGia9190XAMPTB7NkD0jc4pTXZ9r9Dw5PQ/0", "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513308112"); _textPool.Add(dataTemp); dataTemp = new DangmuViewDataConveter(29, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "Nopromises", "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", "问大地慈爱迟迟短缺是深刻思考...", 1, "1513326199"); _textPool.Add(dataTemp); }
/// <summary> /// Process querying dangmu. /// </summary> public void DangmuQuery() { if (null == NetWorkManager.Instance.socket.MessageRepsonseEvent) //wait for all the time... { Log.error(this, "DangmuQuery############服务器没有响应!"); return; } //response get... //for to unserizlized JsonData _jsonObect = JsonMapper.ToObject(NetWorkManager.Instance.socket.MessageRepsonseEvent.Data); if (null == _jsonObect) { Log.error(this, "DangmuQuery#################null == _jsonObect!"); return; } /* * Packet packet = decoder.Decode(e);*/ //目前无法区分消息类型.... DangmuTextRsp textRsp = new DangmuTextRsp(); if (false == textRsp.ParseJsonObject(_jsonObect)) { Log.info(this, "DangmuQuery#################ParseJsonObject no data!"); return; } //TODO: lastid更新完内容还是没有.... if (LoginMgr.IndexId < textRsp.lastId) { LoginMgr.IndexId = textRsp.lastId; } //insert data into dangmu.. foreach (DangmuTextRsp.DangmuTextData initData in textRsp.dataList) { DangmuViewDataConveter dataConv = new DangmuViewDataConveter(initData); //insert derectly.... //if ( true == DangmuTextController.Instance.Displayer.Enable ) //DangmuTextController.Instance.enqueueToDataQueue( dataConv ); if (true == VerticalTextController.Instance.Displayer.Enable) { VerticalTextController.Instance.enqueueToDataQueue(dataConv); } } }
/// <summary> /// Raises the message event. /// uniform asyncronzilly interface, call-back... /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">E.</param> protected void OnMessage(object sender, WebSocketSharp.MessageEventArgs e) { #if SOCKET_IO_DEBUG debugMethod.Invoke("[SocketIO] Raw message: " + e.Data); #endif Debug.Log("[SocketIO] OnMessage e.Data: " + e.Data); hs.MessageRepsonseEvent = null; hs.IsSyncHttpDone = true; //for to unserizlized JsonData _jsonObect = JsonMapper.ToObject(e.Data); if (null == _jsonObect) { Log.error("NetWorkManager", "OnMessage#################null == _jsonObect!"); return; } /* * Packet packet = decoder.Decode(e);*/ //直接构造DangmuViewDataConveter... //目前无法区分消息类型.... DangmuTextRsp textRsp = new DangmuTextRsp(); if (false == textRsp.ParseJsonObject(_jsonObect)) { Log.error("NetWorkManager", "OnMessage#################ParseJsonObject failed!"); return; } if (textRsp.dataList.Count <= 0) { Log.debug("NetWorkManager", "OnMessage#################No new message!"); return; } foreach (DangmuTextRsp.DangmuTextData textData in textRsp.dataList) { DangmuViewDataConveter dataConv = new DangmuViewDataConveter(textData); //insert derectly.... //SCMainWinController.Instance().DangmuControl.enqueueToDataQueue( dataConv ); } //null to do... }
/// <summary> /// Login this instance. /// 登录成功处理... /// </summary> void InitSuccess(DangmuInitRsp initRsp) { LoginMgr.IsLogined = true; //start Open qrcodeView.. WindowsManager.Instance.openWin(typeof(QrcodeView)); if (LoginMgr.IndexId < initRsp.lastId) { LoginMgr.IndexId = initRsp.lastId; } //Login successed... WindowsManager.Instance.OpenAndCloseWin(typeof(ControlView), typeof(LoginView)); if (initRsp.dataList.Count <= 0) { Log.debug(this, "InitDangmu#################No new message!"); return; } //查找WexinId和IndexId... //_model.WexinId = initRsp.dataList [0].weixinId; foreach (DangmuInitRsp.DangmuInitData initData in initRsp.dataList) { DangmuViewDataConveter dataConv = new DangmuViewDataConveter(initData); //insert derectly.... //if ( true == DangmuTextController.Instance.Displayer.Enable ) //DangmuTextController.Instance.enqueueToDataQueue( dataConv ); //if ( true == VerticalTextController.Instance.Displayer.Enable ) VerticalTextController.Instance.enqueueToDataQueue(dataConv); } //插入写测试数据... //TODO: To delete... /* * DangmuViewDataConveter dataTemp = new DangmuViewDataConveter (27, 3, 2, "oYZTz0n7_wbHTNjn9euQCdDjO2p0", "老虎怕小羊", * "http://wx.qlogo.cn/mmopen/vi_32/OJcLpmXK9LVicBl9PgMyjQroh2XDPkh6AB6C1W3bxqEtVoOhbKcq546LBU4xlJxlFUhaia7u1rm1Gz1GH90ZIMwA/0", * "http://yxbwx.mmarket.com/weizannew/attachment/images/meepo_xianchang/N5kkwL2SvlY2N714sy1knAy7L112zu.jpg", 2, "1513326199"); //"长夜里没法睡男儿无泪...".. * DangmuTextController.Instance.enqueueToDataQueue (dataTemp); * VerticalTextController.Instance.enqueueToDataQueue (dataTemp);*/ }
/// <summary> /// Cycles the text. /// </summary> /// <param name="textIndex">Text index.</param> private void CycleText(uint textIndex) { DangmuViewDataConveter dangmuData = null; if (false == _textDicCache.TryGetValue(textIndex, out dangmuData)) { Log.error(this, "DangmuViewDataConveter not found,index: " + textIndex + " size:" + _textDicCache.Count); return; } if (!IsCycle) { _textDicCache.Remove(textIndex); return; } //回收... enqueueToDataQueue(dangmuData); _textDicCache.Remove(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> /// Login this instance. /// 登录成功处理... /// </summary> void InitSuccess(DangmuInitRsp initRsp) { ScModel.IsLogined = true; //start Open qrcodeView..Not need //SCWindowsManager.Instance.openWin( typeof(QrcodeView) ); if (ScModel.IndexId < initRsp.lastId) { ScModel.IndexId = initRsp.lastId; } //DangmuControl.DanmuCurStatus = DangmuTextController.DangmuStatus.DangmuStatus_Inited; //TransparentWindow.SetWindowsMouseDisable (); //Login successed... //ControlView not used any more //WindowsManager.Instance.OpenAndCloseWin( typeof(ControlView) ,typeof(SCLoginView) ); SCWindowsManager.Instance.OpenAndCloseWin(typeof(WebBulletScreenView), typeof(SCLoginView)); if (initRsp.dataList.Count <= 0) { Log.debug(this, "InitDangmu#################No new message!"); return; } //Log.debug (this, "InitSuccess: count:" + initRsp.dataList.Count); //查找WexinId和IndexId... //_model.WexinId = initRsp.dataList [0].weixinId; foreach (DangmuInitRsp.DangmuInitData initData in initRsp.dataList) { DangmuViewDataConveter dataConv = new DangmuViewDataConveter(initData); //insert derectly.... //if ( true == DangmuTextController.Instance.Displayer.Enable ) //DangmuControl.enqueueToDataQueue( dataConv ); //if ( true == VerticalTextController.Instance.Displayer.Enable ) //VerticalTextController.Instance.enqueueToDataQueue( dataConv ); } //DangmuControl.DanmuCurStatus = DangmuTextController.DangmuStatus.DangmuStatus_Opening; }
/// <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)); } }
public void enqueueToDataQueue(DangmuViewDataConveter eData) { //lock (_forMessageEventQueue) //coroutine not need lock... _textQueue.Enqueue(eData); }