L'animazione Android non si ripete


85

Sto cercando di creare un'animazione semplice che si ripeta più volte (o all'infinito).
Sembra che android:repeatCountnon funzioni!
Ecco la mia risorsa di animazione da /res/anim/first_animation.xml:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:repeatCount="infinite"
    >
    <scale
        android:interpolator="@android:anim/decelerate_interpolator"
        android:duration="500"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:toXScale="1.2"
        android:toYScale="1.2"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false" />
    <scale
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="500"
        android:duration="500"
        android:fromXScale="1.2"
        android:fromYScale="1.2"
        android:toXScale="1.0"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false" />
</set>

Innanzitutto dovrebbe ridimensionare l'immagine da 1.0 a 1.2 in 500 ms.
Quindi ridimensionalo a 1,0 in 500 ms.
Ecco come lo sto usando:

Animation firstAnimation = AnimationUtils.loadAnimation(this, R.anim.first_animation);
imgView.startAnimation(firstAnimation);

Fa un ciclo e poi finisce.
Si ingrandisce, poi si riduce e poi si ferma.

Come posso farlo funzionare come previsto?


Cos'è imgView qui nel tuo codice java?
clifgray

Risposte:


63

Aggiornamento: a settembre 2011 un ingegnere Android ha risolto questo problema per la maggior parte. Gli attributi che sono stati ignorati in XML ora funzionano, ad eccezione di repeatCounte fillEnabledche sono ancora ignorati (apposta per qualche motivo). Ciò significa che non è ancora facile ripetere un AnimationSeterrore.

Per i dettagli, vedere la panoramica nei documenti aggiornati (spiega quali attributi vengono ignorati, quali funzionano e quali vengono trasmessi ai bambini). E per una più profonda comprensione di cosa fillAfter, fillBeforee di fillEnabledfatto, vedere il post sul blog dell'ingegnere (Chet Haase) qui .


Risposta originale

Per espandere le risposte di Pavel e altri: è vero che il <set>tag è ridicolmente bacato. Non può gestire correttamente repeatCounte una serie di altri attributi.

Ho passato alcune ore a capire cosa può e non può affrontare e ho inviato una segnalazione di bug / problema qui: Problema 17662

In sintesi (questo riguarda AnimationSets):

setRepeatCount () / android: repeatCount

Questo attributo (così come repeatMode) non funziona in codice o XML. Ciò rende difficile la ripetizione di un intero set di animazioni.

setDuration () / android: durata

L'impostazione di questo su un AnimationSet nel codice FUNZIONA (sovrascrive tutte le durate delle animazioni figli), ma non quando è incluso nel tag in XML

setFillAfter () / android: fillAfter

Funziona sia nel codice che in XML per il tag. Stranamente l'ho fatto funzionare anche senza la necessità di impostare fillEnabled su true.

setFillBefore () / android: fillBefore

Sembra non avere alcun effetto / ignorato sia nel codice che in XML

setFillEnabled () / android: fillEnabled

Sembra non avere alcun effetto / ignorato sia nel codice che in XML. Posso ancora far funzionare fillAfter anche senza includere fillEnabled o impostare fillEnabled su false.

setStartOffset () / android: startOffset

Funziona solo nel codice e non in XML.


48

Ho scoperto che il tag <set> ha un'implementazione difettosa nella classe AnimationSet .
Non può gestire correttamente repeatCount .
Quello che possiamo fare è impostare repeatCount direttamente nel tag <scale> .

Questa risorsa XML funziona bene:

<?xml version="1.0" encoding="utf-8"?>
<scale
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:duration="200"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="1.05"
    android:toYScale="1.05"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatMode="reverse"
    android:fillAfter="false"
    android:repeatCount="24"
/>

Sfortunatamente, questo è limitato a una sola animazione alla volta.
Non possiamo definire una sequenza di animazioni in questo modo ...


Sto eseguendo 2 animazioni in un set e non mi danno alcun problema. gentilmente dimmi di quale problema stai parlando? quale bug? attualmente lavorando su 1.6 sdk
AZ_

La dichiarazione di repeatCount in xml funziona, ma non nel codice
onmyway133

39

Dovresti includere l'attributo

android:repeatCount="infinite"

Ma nella tua animazione "scala" non in "set"


1
ma queste animazioni aspetteranno il completamento di quella precedente? grazie
filthy_wizard

Grazie, ha funzionato! L'impostazione programmatica non l'ha fatto per qualsiasi motivo.
onda di ciliegie

Grazie! Questo ha funzionato. Ma è continuo. È possibile farlo accadere diciamo ogni 5 secondi?
d34th4ck3r

32

Per ottenere un'animazione ripetuta ho utilizzato l'ascoltatore dell'animazione e ho richiamato l'animazione di nuovo quando è finita. Questo fa un reticolo della telecamera che si concentra come un'animazione con parentesi.

Ecco il layout di animazione xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
    android:fromXScale="1.0"
    android:toXScale=".7"
    android:fromYScale="1.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toYScale=".7"
    android:duration="1000"/>
<scale 
    android:duration="1000"
    android:fromXScale=".7"
    android:toXScale="1.0"
    android:fromYScale=".7"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toYScale="1.0"
    android:startOffset="1000"/>

</set>

Ecco il codice java

 public void startAnimation() {

            View brackets = findViewById(R.id.brackets);
            brackets.setVisibility(View.VISIBLE);

            Animation anim = AnimationUtils.loadAnimation(BuzzFinderActivity.this, R.anim.crosshair_focusing);
            anim.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationEnd(Animation arg0) {
                    Animation anim = AnimationUtils.loadAnimation(BuzzFinderActivity.this, R.anim.crosshair_focusing);
                    anim.setAnimationListener(this);
                    brackets.startAnimation(anim);

                }

                @Override
                public void onAnimationRepeat(Animation arg0) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationStart(Animation arg0) {
                    // TODO Auto-generated method stub

                }

            });


            brackets.startAnimation(anim);
}

2
Ya dovrebbe essere la risposta corretta. Funzionando in tutti i dispositivi e a livello di sistema operativo
Smeet

ha aiutato anche me, ma ho rimosso queste due righe dal metodo End Animation anim = AnimationUtils.loadAnimation (BuzzFinderActivity.this, R.anim.crosshair_focusing); anim.setAnimationListener (this);
aida

10

Inoltre stavo affrontando lo stesso problema .. ho incluso android: repeatCount = "infinite" nel file XMl .. ora funziona bene ...

  <translate 
           android:fromXDelta="0"
           android:toXDelta="80"
           android:duration="1000"
           android:repeatCount="infinite"   
           android:repeatMode="reverse" 
           android:pivotX="50%"
           android:pivotY="50%"                             
           android:fillAfter="true"/>


9

puoi provare questo codice. Nel tuo codice basta aggiungere,

firstAnimation.setRepeatCount(5);

Questo ripeterà l'animazione per un tempo definito

firstAnimation.setRepeatCount(Animation.INFINITE);
firstAnimation.setRepeatMode(Animation.INFINITE);

Questo ripeterà l'animazione indefinitamente.


4
repeatModedovrebbe essere RESTARToREVERSE
xinthink

questo è esattamente quello che voglio, impostato su impostato dinamicamente all'infinito.
Varun Chaudhary

2

4

Ho provato a utilizzare il codice di Daniel per mostrare l'animazione il numero esatto di volte e ho riscontrato un problema: l'animazione è stata mostrata approssimativamente n / 2 volte, quando n volte previsto.

Quindi ho modificato il codice di Daniel:

//...
@Override
public void onAnimationEnd(Animation arg0) {
    mCurrentCount++;
    if (mCurrentCount < REPEAT_COUNT) {  
        Animation anim = AnimationUtils.loadAnimation(BuzzFinderActivity.this, R.anim.crosshair_focusing);
        anim.setAnimationListener(this);
        brackets.post(new Runnable() {
            @Override
            public void run() {
                brackets.startAnimation(anim);
            }
        }  
    } 
}
//... 

Usando la variante, mostrata sopra, l'animazione viene mostrata esattamente REPEAT_COUNT volte, perché il metodo View.post () dà la possibilità di iniziare una nuova animazione dopo aver terminato tutte le azioni, relative all'animazione precedente.


3

devi aggiungere solo una riga nel tuo codice xml che ho suggerito di seguito.

<scale
    android:duration="500"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="1.2"
    android:toYScale="1.2"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite" // just add this one line 
    android:fillAfter="false"
    />
</set>

3

Ho risolto questo problema utilizzando android:repeatMode="reverse"prima nel mio progetto.

<scale
    android:interpolator="@android:anim/decelerate_interpolator"
    android:duration="500"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="1.2"
    android:toYScale="1.2"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatMode="reverse"
    android:repeatCount="infinite" />

2

Con Android SDK versione 4.0.3:

Negli elementi di animazione forniti:

android: repeatCount = "- 1"

lo rende un'animazione infinita.


Grazie! Funziona bene su 4.2 senza alcuna soluzione alternativa
ruX

2

Aggiungi la seguente classe al tuo progetto:

import android.view.View;
import android.view.animation.Animation;

public class AnimationRepeater implements Animation.AnimationListener
{
    private View view;
    private Animation animation;
    private int count;

    public AnimationRepeater(View view, Animation animation)
    {
        this.view = view;
        this.animation = animation;
        this.count = -1;
    }

    public AnimationRepeater(View view, Animation animation, int count)
    {
        this.view = view;
        this.animation = animation;
        this.count = count;
    }

    public void start()
    {
        this.view.startAnimation(this.animation);
        this.animation.setAnimationListener(this);
    }

    @Override
    public void onAnimationStart(Animation animation) { }

    @Override
    public void onAnimationEnd(Animation animation)
    {
        if (this.count == -1)
            this.view.startAnimation(animation);
        else
        {
            if (count - 1 >= 0)
            {
                this.animation.start();
                count --;
            }
        }
    }

    @Override
    public void onAnimationRepeat(Animation animation) { }
}

Per un ciclo infinito della tua vista, fai quanto segue:

Animation a = AnimationUtils(Context, R.anim.animation);
new AnimationRepeater(View, a).start();

Se desideri ripetere l'animazione solo per N volte, procedi come segue:

Animation a = AnimationUtils(Context, R.anim.animation);
new AnimationRepeater(View, a, int N).start();

N sta per numero di ripetizioni.


1

Faccio la maggior parte delle mie cose in modo programmatico e potrei essere in ritardo o inefficiente su questo, ma questo ma ho completato l'obiettivo del set di animazioni di ripetizione (ho anche 2 set di animazioni alternate). Tutto ciò che fa questo codice è semplicemente dissolvenza in un'immagine, pausa, quindi dissolvenza in uscita, dissolvenza in un'altra immagine, pausa, dissolvenza in uscita e ripristinare la prima (risciacqua e ripeti). Per prima cosa ho definito le mie visualizzazioni immagine:

    final ImageView purple = (ImageView)findViewById(R.id.purp);
    final ImageView yellow = (ImageView)findViewById(R.id.yell);
    purple.setVisibility(View.INVISIBLE);
    yellow.setVisibility(View.INVISIBLE);

Quindi ho creato due timer, timer attività e gestori per gestire quando avviare e interrompere ogni animazione:

    Timer p = new Timer();
    TimerTask pu = new TimerTask() {
        public void run() {
                handler1.post(new Runnable() {
                        public void run() 
                        {
                           fadein(purple);
                        }
               });
        }};
        p.schedule(pu, 6000, 12000);

    final Handler handler2 = new Handler();

    Timer y = new Timer();
    TimerTask ye = new TimerTask() {
        public void run() {
                handler2.post(new Runnable() {
                        public void run() 
                        {
                           fadein(yellow);
                        }
               });
        }};

        y.schedule(ye, 0, 12000);

Infine, invece di creare set di animazioni aggiungendo animazioni, mi limito agli ascoltatori di animazioni per determinare quando avviare ciascuna animazione:

public void fadein (final ImageView image)
{
    Animation anim = new AlphaAnimation(0, 1);

    anim.setDuration(2000);

    image.startAnimation(anim);
    anim.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation) 
        {
            image.clearAnimation();
            image.invalidate();
            pause(image);

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }
    });
}    
public void pause (final ImageView image)
{
    Animation anim = new AlphaAnimation(1, 1);

    anim.setDuration(2000);

    image.startAnimation(anim);
    anim.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation) 
        {
            image.clearAnimation();
            image.invalidate();
            fadeout(image);

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }
    });
}     
public void fadeout (final ImageView image)
{
    Animation anim = new AlphaAnimation(1,0);

    anim.setDuration(2000);

    image.startAnimation(anim);
    anim.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation) 
        {
            image.clearAnimation();
            image.invalidate();
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }
    });
}    

La chiara animazione e invalida dove solo i tentativi precedenti e ottenere questa cosa per funzionare bene. Non so se siano obbligatori o meno.

Spero che questo aiuti qualcuno.


Ryan


1

ho ottenuto questo per andare ... stavo cercando di ottenere una vista per ruotare continuamente in un cerchio.

precedente stavo usando rotation.setRepeatMode (-1) ma non ha funzionato. passato a setrepeatcount e funziona. Questo è su Jelly Bean 4.2.2

 ObjectAnimator rotation = ObjectAnimator.ofFloat(myview,
                          "rotation", 360).setDuration(2000);
                rotation.setRepeatMode(-1);
          rotation.setRepeatCount(Animation.INFINITE); 
 rotation.start();

0

Ho affrontato lo stesso problema, ma non volevo eseguire alcuna operazione di temporizzazione in Java a causa del punto che il thread dell'interfaccia utente potrebbe essere molto occupato a volte. Il flag INFINITE non funziona per il tag impostato. Quindi ho risolto il problema con un piccolo pezzo di codice:

mAnimation = (AnimationSet) AnimationUtils.loadAnimation(myContext, R.anim.blink);
mIcon.startAnimation(mAnimation);
mAnimation.setAnimationListener(new AnimationListener() {
    public void onAnimationStart(Animation animation) {}
    public void onAnimationRepeat(Animation animation) {}
    public void onAnimationEnd(Animation animation) {
        mIcon.startAnimation(mAnimation);
    }
});

con il seguente XML:

<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />

<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1000"
    android:fromAlpha="0.9"
    android:startOffset="1000"
    android:toAlpha="0.0" />

Dove mIcon è un ImageView dal mio layout.


0

Ho risolto questo problema. Questa è la mia versione della correzione:

public class HelloAndroidActivity extends Activity {
private static String TAG = "animTest";
private Animation scaleAnimation;
private int currentCover = 0;
private List<ImageView> imageViews = new ArrayList<ImageView>(3);
private Button btn;
private ImageView img;

/**
 * Called when the activity is first created.
 * @param savedInstanceState If the activity is being re-initialized after 
 * previously being shut down then this Bundle contains the data it most 
 * recently supplied in onSaveInstanceState(Bundle). <b>Note: Otherwise it is null.</b>
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i(TAG, "onCreate");
    setContentView(R.layout.test);

    img = (ImageView)findViewById(R.id.testpict);
    imageViews.add(img);
    img = (ImageView)findViewById(R.id.testpictTwo);
    imageViews.add(img);
    img = (ImageView)findViewById(R.id.testpict3);
    imageViews.add(img);

    scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.photo_scale);
    scaleAnimation.setAnimationListener(new CyclicAnimationListener());

    btn = (Button)findViewById(R.id.startBtn);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            imageViews.get(0).startAnimation(scaleAnimation);
        }
    });



}

private class CyclicAnimationListener implements AnimationListener{

    @Override
    public void onAnimationEnd(Animation animation) {
        currentCover += 1;
        if(currentCover >= imageViews.size()){
            currentCover = 0;
        }
        img = imageViews.get(currentCover);
        scaleAnimation = AnimationUtils.loadAnimation(HelloAndroidActivity.this, R.anim.photo_scale);
        scaleAnimation.setAnimationListener(new CyclicAnimationListener());
        img.startAnimation(scaleAnimation);
    }

    @Override
    public void onAnimationRepeat(Animation animation) {
        Log.d("Animation", "Repeat");
    }

    @Override
    public void onAnimationStart(Animation animation) {

    }

}

}

0

Ho appena riscontrato questo problema mentre lavoravo su un'app compatibile con le versioni precedenti. così frustrante! ho finito per codificare una bella classe di soluzione alternativa che può essere chiamata da onCreate e darà il via a qualsiasi risorsa di animazione in un ciclo indefinito.

la classe, AnimationLooper, è disponibile qui: https://gist.github.com/2018678


0

Dopo aver cercato tra le risposte da Internet, ho trovato una soluzione che funziona perfettamente per me. (E sì, repeatCount e repeatMode sono estremamente bacati se usati insieme a animationSet).

anim_rotate_fade.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:ordering="together" >

    <objectAnimator
        android:duration="3000"
        android:propertyName="rotation"
        android:repeatCount="1"
        android:valueTo="360"
        android:valueType="floatType" />

    <objectAnimator
        android:duration="3000"
        android:propertyName="alpha"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:valueFrom="0.0"
        android:valueTo="0.3"
        android:valueType="floatType" />

    <objectAnimator
        android:duration="3000"
        android:propertyName="y"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:valueFrom="380"
        android:valueTo="430"
        android:valueType="floatType" />

</set>

In attività: (risolverlo introducendo un leggero ritardo dopo la fine dell'animazione).

ImageView starlightImageView = new ImageView(this);
starlightImageView.setImageResource(R.drawable.starlight);
final AnimatorSet animate = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.anim.anim_rotate_fade);
AnimatorListenerAdapter animatorListener = new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        new Handler().postDelayed(new Runnable() {
            @Override public void run() {
                animate.start();
            }
        }, 1000);
    }
};
animate.setTarget(starlightImageView);
animate.addListener(animatorListener);

Ci sono molte classi su cui vorresti fare delle ricerche, ma attualmente sto usando objectAnimator che è molto flessibile. Non consiglierei di usare Animation o AnimationUtils:

  • Animazione
  • AnimationUtils
  • Animatore
  • AnimatorInflater
  • AnimatorListener
  • AnimatorListenerAdapter

0

È necessario ascoltare il completamento della prima animazione, quindi riavviare l'animazione nella richiamata onStopAnimation, provare questo collegamento


0

Piccola modifica alla risposta @Danufr per salvare le risorse dal caricamento di nuovo.

    operator = (ImageView) findViewById(R.id.operator_loading);
  final  Animation ani = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.finding_operator);


    ani.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {

            operator.startAnimation(ani);

        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });

    operator.setAnimation(ani);

0

Ho risolto questo problema usando thread.

Button btn = (Button) findViewById(R.id.buttonpush);
    final TextView textview = (TextView) findViewById(R.id.hello);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            textview.setText("...................");
            final Animation animationtest = AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.slide_in_left);
            animationtest.setDuration(1000);

            final Handler handler = new Handler();
            Runnable runnable = new Runnable() {
                public void run() {
                    handler.postDelayed(this, 1500);
                    textview.startAnimation(animationtest);
                }
            };
            handler.postDelayed(runnable, 500); // start
            handler.removeCallbacks(runnable); //STOP Timer

        }
    });

0

funziona bene

 GifDrawable gifDrawable = (GifDrawable) gifImageView.getDrawable();
    gifDrawable.setLoopCount(0);

0

Nessuna delle soluzioni di cui sopra ha funzionato nel mio caso. La soluzione di Danuofr ha funzionato per il set di animazione, ma quando stavo facendo i test unitari, i miei test erano bloccati in questo ciclo infinito. Infine, specifico per il mio caso, avevo bisogno di ripetere questa animazione un numero specifico di volte. Quindi, ho aggiunto manualmente copie della mia animazione in anim_rot.xml in modo a cascata aggiungendo il valore di offset . So che è brutto e non funzionerà per molti, ma è stata l'unica soluzione alternativa per il mio caso.

anim_rot.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:duration="2000"
        android:fromDegrees="20"
        android:pivotX="29%"
        android:pivotY="50%"
        android:toDegrees="-20" />
    <rotate
        android:duration="2000"
        android:fromDegrees="-20"
        android:pivotX="29%"
        android:pivotY="53%"
        android:startOffset="2000"
        android:toDegrees="20" />
    <rotate
        android:startOffset="4000"
        android:duration="2000"
        android:fromDegrees="20"
        android:pivotX="29%"
        android:pivotY="56%"
        android:toDegrees="-20" />
    <rotate
        android:duration="2000"
        android:fromDegrees="-20"
        android:pivotX="29%"
        android:pivotY="59%"
        android:startOffset="6000"
        android:toDegrees="20" />
    <rotate
        android:startOffset="8000"
        android:duration="2000"
        android:fromDegrees="20"
        android:pivotX="29%"
        android:pivotY="62%"
        android:toDegrees="-20" />
    <rotate
        android:duration="2000"
        android:fromDegrees="-20"
        android:pivotX="29%"
        android:pivotY="65%"
        android:startOffset="10000"
        android:toDegrees="20" />
</set>

L'ho fatto per ripetere l'animazione 3 volte. È possibile aggiungere più copie per ripeterlo volte specifiche aggiungendo valori di offset.


-1

Prova ad aggiungere il codice a un thread in loop o un'istruzione while / for


Bene, l'unica soluzione che ho trovato è evitare di usare set tag.
Pavel Chernov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.