//实现IIterator的三个接口 Object IIterator.Next() { if (mListEnumerator.MoveNext()) { XmlNode node = (XmlNode)mListEnumerator.Current; try{ mCurrentSong = new SongAttribute( Convert.ToString(node.Attributes ["real_name"].Value), Convert.ToString(node.Attributes ["prog_name"].Value), Convert.ToInt32(node.Attributes ["scene_id"].Value), Convert.ToInt32(node.Attributes ["character_id"].Value), Convert.ToInt32(node.Attributes ["BPM"].Value)); } catch { return(null); } mIndex++; return(mCurrentSong); } else { return(null); } }
// Use this for initialization void Start() { mInstance = this; mObservers = new ArrayList(); mBarIterator = SingletonGameData.GetInstance().CreateBarIterator(); //mSongIterator = SingletonGameData.GetInstance ().CreateSongIterator (); mListSameBarsAttribute = new List <BarAttribute> (); while (mBarIterator.HasNext()) { mListSameBarsAttribute.Add(mBarIterator.Next() as BarAttribute); } mCurrentBarType = mListSameBarsAttribute[mCurrentBar].BarType; mSameBarNumber = mListSameBarsAttribute [mCurrentBar].SameBarsNumber; mListCount = mListSameBarsAttribute.Count; mSongAttribute = SingletonGameData.GetInstance().GetCurrentSongAttribute(); mBeatSeconds = (float)60 / mSongAttribute.BPM; }
/// <summary> /// 获得当前选择的歌曲的属性 /// </summary> /// <returns>返回歌曲属性对象</returns> public SongAttribute GetCurrentSongAttribute() { XmlNode node = mRoot.SelectSingleNode("/Configuration/Songs/Song[@prog_name='" + DataBetweenScene.SongName + "']"); SongAttribute song; if (node == null) { return(null); } try{ song = new SongAttribute( Convert.ToString(node.Attributes ["real_name"].Value), Convert.ToString(node.Attributes ["prog_name"].Value), Convert.ToInt32(node.Attributes ["scene_id"].Value), Convert.ToInt32(node.Attributes ["character_id"].Value), Convert.ToInt32(node.Attributes ["BPM"].Value) ); } catch { return(null); } return(song); }