locked
Animazione sincronizzata RRS feed

  • Domanda

  • Ciao a tutti, una domanda e spero in una risposta, ho bisogno di creare un animazione sincronizzata vale dire ad esempio un semaforo a secondo dei numeri devo animare una grafica.

    VS 2010 WP SDK 7.8

    facciamo un esempio di creare un codice morse

    -- •- •-• • -••• •-•• ••- M A R E (spazio) B L U

    Quello che vorrei e animare in tempi la grafica a velocità diverse,

    questo e un esempio, mi piacerebbe avere animazione tipica delle mattonelle che girano

    come succede nel desktop del Phone7 stile metro.

    Non ho idea da dove partire ad esempio ho trovato questo codice che

    in parte mi soddisfa ma mettendo dentro nel for

    l'animazione non rispetta i tempi e quindi si animano 2 o 3 bottoni nello stesso istante,

    invece di uno alla volta a secondo della combinazione inviata.

    CODICE USATO

            private static DoubleAnimation CreateDoubleAnimation(double from, double to, DependencyObject target, object propertyPath, TimeSpan duration)
            {
                var db = new DoubleAnimation();
                db.To = to;
                db.From = from;
                db.Duration = duration;
                Storyboard.SetTarget(db, target);
                Storyboard.SetTargetProperty(db, new PropertyPath(propertyPath));
                return db;
            }

            private bool Start()
            {
                if (Level.Length > 5) { ResetLevel(); }

                NewLevel();

                string Gameindex = "";

                for (int i = 0; i < Level.Length; i++)
                {
                    int y = r.Next(1, 5);
                    Level[i] = y;
                    Push[i] = 0;

                    Gameindex = Gameindex + " " + y.ToString();
                    
                    switch (y)
                    {
                        case 1:
                            var sb1 = new Storyboard();
                            var db1 = CreateDoubleAnimation(0, 200, this.image_red, Image.HeightProperty, TimeSpan.FromMilliseconds(250));
                            sb1.Children.Add(db1);
                            sb1.Begin();
                            break;
                        case 2:
                            var sb2 = new Storyboard();
                            var db2 = CreateDoubleAnimation(0, 200, this.image_green, Image.HeightProperty, TimeSpan.FromMilliseconds(250));
                            sb2.Children.Add(db2);
                            sb2.Begin();
                            break;
                        case 3:
                            var sb3 = new Storyboard();
                            var db3 = CreateDoubleAnimation(0, 200, this.image_yellow, Image.HeightProperty, TimeSpan.FromMilliseconds(250));
                            sb3.Children.Add(db3);
                            sb3.Begin();
                            break;
                        case 4:
                            var sb4 = new Storyboard();
                            var db4 = CreateDoubleAnimation(0, 200, this.image_blue, Image.HeightProperty, TimeSpan.FromMilliseconds(250));
                            sb4.Children.Add(db4);
                            sb4.Begin();
                            break;
                    }
                }

                this.button_start.Content = "Play " + Gameindex;

                return true;
            }

    FINE CODICE

    • Modificato ivano.monti venerdì 25 gennaio 2013 14:21
    venerdì 25 gennaio 2013 14:20