/// <summary> /// 対象データを最後尾に付ける /// </summary> /// <param name="targetMyList"></param> /// <returns></returns> public void DequeueKey(ref List <MsgBaseNewsData> targetMyList, string DATAKEY) { //ターゲットデータ MsgBaseNewsData targetData = null; //新リスト List <MsgBaseNewsData> newList = new List <MsgBaseNewsData>(); foreach (MsgBaseNewsData newsData in targetMyList) { //HITチェック if (newsData.DATAKEY == DATAKEY) { targetData = newsData; } else { newList.Add(newsData); } } //NULLチェック if (targetData == null) { return; } //最後尾に追加 newList.Add(targetData); //リスト設定 targetMyList = newList; }
/// <summary> /// 初期化 /// </summary> /// <param name="parent"></param> public void Init(float offsetY, GameObject parent) { //サイズ調整 RectTransform rectTransform = Panel.GetComponent <RectTransform>(); rectTransform.anchorMin = new Vector2(0.5f, 0); rectTransform.anchorMax = new Vector2(0.5f, 1); rectTransform.pivot = new Vector2(0.5f, 0.5f); rectTransform.anchoredPosition = Vector2.zero; rectTransform.offsetMax = Vector2.zero; rectTransform.offsetMin = new Vector2(offsetY, 0); rectTransform.sizeDelta = new Vector2(480, 0); //サムネインスタンス取得 this.Thumbnail = Panel.transform.Find("Image").GetComponent <Image>(); this.Text = Panel.transform.Find("Text").GetComponent <Text>(); //非表示に設定 Panel.gameObject.SetActive(false); //親パネルにセット Panel.transform.SetParent(parent.transform, false); //ニュース初期化 this.news = null; }
/// <summary> /// データキーをデキューする。 /// </summary> /// <param name="targetMyList"></param> /// <returns></returns> public string DequeueKey(ref List <MsgBaseNewsData> targetMyList) { //先頭から1個取り出す MsgBaseNewsData data = targetMyList.Dequeue(); //最後尾に追加 targetMyList.Add(data); //データキーを返す return(data.DATAKEY); }
public IEnumerator CreateRow200(GameObject Content, float offsetY, MsgBaseNewsData news1, MsgBaseNewsData news2, MsgBaseNewsData news3) { Image panel = CreateRowPanel_200(Content, offsetY); yield return(StartCoroutine(CreateNewsPanel_200(panel.gameObject, -1280, news1))); yield return(StartCoroutine(CreateNewsPanel_200(panel.gameObject, -2, news2))); yield return(StartCoroutine(CreateNewsPanel_200(panel.gameObject, 1276, news3))); yield return(panel); }
/// <summary> /// パネルを非表示にする /// </summary> public void Hide() { //ニュースセット this.news = null; //活性化 this.Panel.gameObject.SetActive(false); //サムネクリア 更新済みマーク ClearThumbnail(false); //タイトルセット this.Text.text = ""; }
//==================================================================== // // 操作処理 // //==================================================================== #region 操作処理 /// <summary> /// ニュースをセットする /// </summary> public void SetNews(MsgBaseNewsData news) { //ニュースセット this.news = news; //活性化 this.Panel.gameObject.SetActive(true); //サムネクリア 更新対象にする ClearThumbnail(true); //タイトルセット this.Text.text = news.TITLE; }
/// <summary> /// データを比較する /// 同じならtrue /// </summary> /// <param name="newData"></param> /// <returns></returns> private bool CompareData(MsgBaseNewsData newData) { try { //前回値が空ならfalse if (prvData == null) { return(false); } //URLを比較する return(newData.URL == prvData.URL); } catch { return(false); } }
/// <summary> /// 記事パネルを生成する /// </summary> /// <param name="parent"></param> /// <returns></returns> public IEnumerator CreateNewsPanel_200(GameObject parent, float offsetMinX, MsgBaseNewsData news) { //パネルを生成する Image panel = UICreator.CreatePanel(parent); //サイズ調整 RectTransform rectTransform = panel.GetComponent <RectTransform>(); rectTransform.anchorMin = new Vector2(0.5f, 0); rectTransform.anchorMax = new Vector2(0.5f, 1); rectTransform.pivot = new Vector2(0.5f, 0.5f); rectTransform.anchoredPosition = Vector2.zero; rectTransform.offsetMax = Vector2.zero; rectTransform.offsetMin = new Vector2(offsetMinX, 0); rectTransform.sizeDelta = new Vector2(638, 0); //コンテンツを生成 CreateNewsImage_200(panel.gameObject, news); StartCoroutine(CreateNewsText200(panel.gameObject, news.TITLE)); yield return(panel); }
/// <summary> /// 記事サムネイルを生成する /// </summary> /// <param name="parent"></param> /// <returns></returns> public void CreateNewsImage_200(GameObject parent, MsgBaseNewsData news) { try { //イメージを生成する Image image = UICreator.CreateImage(parent); //サイズ調整 RectTransform rectTransform = image.GetComponent <RectTransform>(); rectTransform.anchorMin = new Vector2(0, 1f); rectTransform.anchorMax = new Vector2(0, 1f); rectTransform.pivot = new Vector2(0.5f, 0.5f); rectTransform.offsetMax = new Vector2(245, -45f); rectTransform.offsetMin = new Vector2(22.0f, -135f); rectTransform.sizeDelta = new Vector2(245, 135); image.GetComponent <Image>().sprite = Sprite.Create(LpsImageLoader.CreateTextureFromBinary(news.THUMBNAIL_DATA), new Rect(0, 0, news.THUMBNAIL_WIDTH, news.THUMBNAIL_HEIGHT), Vector2.zero); } catch (Exception ex) { Debug.Log(ex.Message); } }
//==================================================================== // // イベントハンドラ // //==================================================================== #region イベントハンドラ /// <summary> /// アイテム更新 /// </summary> /// <returns></returns> private IEnumerator updateItem() { //インデックスチェック if (this.dataIndex == -1) { yield break; } //ニュースデータNULLチェック if (ScrollViewController.sc.NewsDataList == null) { yield break; } //ニュースデータカウントチェック if (ScrollViewController.sc.NewsDataList.Count - 1 < this.dataIndex) { yield break; } //ニュースデータ取得 MsgBaseNewsData data = ScrollViewController.sc.NewsDataList[this.dataIndex]; //コンペアチェック if (CompareData(data)) { yield break; } //一個前のURL設定 prvData = data; //タイトル表示 this.title.text = data.TITLE; //サムネイルURL取得 string thumbUrl = ThumbnailUrl.CreateListThumbnailUrl(data.THUMBNAIL_URL); //ファイルからサムネイル取得を試みる Texture2D texture = LiplisCache.Instance.ImagePath.GetWebTexutreFromFile(thumbUrl); //NULLならノーイメージ適用 if (texture == null) { //優先要求リストに入れる LiplisCache.Instance.ImagePath.SetRequestUrlQPrioritize(thumbUrl); //ノーイメージテクスチャを返す texture = LiplisCache.Instance.ImagePath.GetNoImageTex(); } //ボタンのテキスト変更 if (texture != null) { try { icon.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero); } catch { } } else { Debug.Log("テクスチャ未更新"); } }
//==================================================================== // // 更新処理 // //==================================================================== #region 更新処理 /// <summary> /// アイテム更新 /// </summary> /// <returns></returns> private IEnumerator updateItem() { if (this.dataIndex == -1) { yield break; } //ニュースデータNULLチェック if (ScrollViewControllerLog.sc.NewsDataList == null) { yield break; } //ニュースデータカウントチェック if (ScrollViewControllerLog.sc.NewsDataList.Count - 1 < this.dataIndex) { yield break; } //ニュースデータ取得 MsgBaseNewsData data = ScrollViewControllerLog.sc.NewsDataList[this.dataIndex]; //コンペアチェック if (CompareData(data)) { yield break; } //一個前のURL設定 prvData = data; //タイトル表示 this.txtNews.text = data.TITLE; //サムネイルURL取得 string thumbUrl = ThumbnailUrl.CreateListThumbnailUrl(data.THUMBNAIL_URL); //時刻表示 this.txtTime.text = LpsDatetimeUtil.dec(data.CREATE_TIME).ToString("yyyy/MM/dd HH:mm:ss"); //タイプ表示 this.txtType.text = ContentCategolyText.GetContentText(data.DATA_TYPE); //ファイルからサムネイル取得を試みる Texture2D texture = LiplisCache.Instance.ImagePath.GetWebTexutreFromFile(thumbUrl); //NULLならノーイメージ適用 if (texture == null) { texture = LiplisCache.Instance.ImagePath.GetNoImageTex(); } //NULLならWebからダウンロードする if (texture == null) { //からテクスチャ取得 texture = LiplisCache.Instance.ImagePath.GetNoImageTex(); //設定 icon.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero); //最新ニュースデータ取得 var Async = LiplisCache.Instance.ImagePath.GetWebTexutre(thumbUrl); //非同期実行 yield return(CoroutineHandler.StartStaticCoroutine(Async)); //再度データを取り直す data = ScrollViewControllerLog.sc.NewsDataList[this.dataIndex]; //データ取得 texture = (Texture2D)Async.Current; } //ボタンのテキスト変更 if (texture != null) { try { icon.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero); } catch { } } else { } }