30 using System.ComponentModel;
31 using System.Collections.Generic;
32 using Microsoft.Xna.Framework;
39 [EditorBrowsable( EditorBrowsableState.Never )]
44 get {
return _layout.StartIndex == 0; }
47 public bool IsAtBottom
49 get {
return _layout.EndIndex == _childObjects.Count; }
52 public int ItemCount {
get {
return _childObjects.Count; } }
54 private VerticalScrollLayout _layout;
57 : base( new VerticalScrollLayout() )
59 _layout = (VerticalScrollLayout)Layout;
61 HorizontalSizing =
Sizing.Expanding;
62 VerticalSizing =
Sizing.Expanding;
63 AddedToGame += AddListeners;
74 const double MaxMoves = 5;
77 Queue<double> lastMoves =
new Queue<double>();
81 if ( _childObjects == null || _childObjects.Count == 0 )
87 if ( lastMoves.Count >= MaxMoves )
89 lastMoves.Enqueue( movement );
91 velocity = lastMoves.Average();
93 List<GameObject> widgets = _childObjects.FindAll( o => o is
Widget );
94 _layout.Scroll( widgets, movement );
97 public override void Update(
Time time )
99 if ( Math.Abs( velocity ) >
float.Epsilon && _childObjects != null && _childObjects.Count > 0 )
101 List<GameObject> widgets = _childObjects.FindAll( o => o is
Widget );
102 _layout.Scroll( widgets, velocity );
112 _layout.ScrollUp( Objects.items );
117 _layout.ScrollDown( Objects.items );
122 _layout.StartIndex = 0;
123 _layout.EndIndex = 0;
127 public O this[
int index]
129 get {
return (
O)_childObjects[index]; }
130 set { _childObjects[index] = value; }
133 protected internal override void DrawChildObjects( ref Matrix parentTransformation, ref Matrix transformation, ref Matrix childTransformation )
136 for (
int i = _layout.StartIndex; i < _layout.EndIndex; i++ )
138 ( (
Widget)Objects[i] ).Draw( childTransformation );
154 [EditorBrowsable( EditorBrowsableState.Never )]
159 static Image upImage = null;
160 static Image downImage = null;
161 static Image transparentImage = null;
184 Add( CreateVerticalScrollPanel() );
189 AddedToGame += AddListeners;
195 internal protected abstract O CreateWidget(
T item );
197 private void AddListeners()
204 private Widget CreateVerticalScrollPanel()
208 if ( upImage == null )
215 scrollUpButton =
new PushButton( transparentImage );
216 scrollUpButton.
Clicked += scrollUp;
217 scrollPanel.
Add( scrollUpButton );
221 scrollDownButton =
new PushButton( transparentImage );
222 scrollDownButton.
Clicked += scrollDown;
223 scrollPanel.
Add( scrollDownButton );
233 foreach ( var item
in List )
235 Content.
Add( CreateWidget( item ) );
247 private void ShowUpButton()
249 scrollUpButton.
Image = upImage;
254 private void ShowDownButton()
256 scrollDownButton.
Image = downImage;
263 button.
Image = transparentImage;
267 private void scrollDown()
279 Hide( scrollDownButton );
284 private void scrollUp()
291 Hide( scrollUpButton );
296 private void listChanged()
static Image LoadImageFromResources(string name)
static void DoNextUpdate(Action action)
Suorittaa aliohjelman seuraavalla päivityksellä.
static Image FromColor(int imageWidth, int imageHeight, Color color)
Luo yksivärisen kuvan.
Kosketuspaneelin kosketus.
Sizing
Olion koon asettaminen asettelijan sisällä.
Image Image
Olion kuva. Voi olla null, jolloin piirretään vain väri.
ButtonState
Napin (minkä tahansa) asento.
Asettelee widgetit riviin vaakasuunnassa.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
static void EndDrawingInsideShape()
static readonly Color Transparent
Läpinäkyvä väri.
Peliluokka reaaliaikaisille peleille.
Asettelee widgetit päällekäin, järjestyksessä ylhäältä alas.
Listener ListenGestureOn(GameObject o, GestureType type, TouchHandler handler, string helpText)
GestureType
Kosketuseleen tyyppi.
Keyboard Keyboard
Näppäimistö.
Action Changed
Tapahtuu kun listan sisältö muuttuu.
TouchPanel TouchPanel
Kosketusnäyttö. Vain kännykässä.
void Add(IGameObject childObject)
Lisää annetun peliolion tämän olion lapseksi. Lapsiolio liikkuu tämän olion mukana, ja sen paikka ja koko ilmaistaan suhteessa tähän olioon.
Luokka, joka sisältää metodeita kuvioiden ja tekstuurien piirtämiseen 2D-tasossa. ...
Vector MovementOnScreen
Kosketuksen liike ruudulla.
static void BeginDrawingInsideShape(Shape shape, ref Matrix transformation)
Makes all the subsequent draw calls until EndDrawingInsideShape limit the drawing inside shape (trans...
Lista, joka ilmoittaa muutoksistaan.