Autor Zpráva
RobertH
Profil
Zdravim,

potřeboval bych nastavit počet opakování animace pomocí AS2.

Příklad:
Mám banner (6 s.), který potřebuju aby se opakoval max. 5x (30 s.).

Uměl by mi někdo pomoc?
weroro
Profil
Vytvor si novú vrstvu cez celú animáciu a napíš do nej tento ActionScript:
var MaxPlays:Number = 3; // Maximálny počet možných prehraní animácie
if (this.vars.plays == undefined)
{
	this.createEmptyMovieClip ("vars", this.getNextHighestDepth ());
	this.vars.plays = 1;
}
else if (this.vars.plays < this.MaxPlays)
{
	this.vars.plays++;
}
else
{
	// Sem sa píše akcia ktorá sa má vykonať, keď sa animácia prehrá tolko krát koľko jej bolo zadefinované napr. this.stop();
}


// edit

alebo ma práve teraz napadlo ešte jedno optimálnejšie riešenie (Ospravedlňujem sa za úpravu ale sedím na pive a píšem to z hlavy :) )
Vytvor si novú vrstvu cez celú animáciu a napíš do nej tento ActionScript:
var MaxPlays:Number = 5;
_root.plays = _root.plays == undefined ? 1 : _root.plays += 1;
_root.plays > _root.MaxPlays ? this.stop () : null; // ked sa animácia prehra urceny pocet krat, tak sa zastavi na prvom snimku
RobertH
Profil
Díky za pomoc, něco podobného jsem si už našel na netu, ale to mi bohužel google AdWords zamítnul z důvodu "nepřijatelné delky animace", limit je 30 s., já mám po třech opakování 24 s., tak jsem zkusil tu animaci 3x zkopírovat za sebou ve flashi a prošla, tak teď zkusim ještě ten skript od tebe.

Kdyby se jedno pouze o jeden banner, tak to neřeším, ale kampaň má cca 80 bannerů a nechce se mi u každého kopírovat framy :(
RobertH
Profil
Tak ani takto banner neprošel přes google, ale co jsem si všimnul, že po zastavaní animace se mi stále hýbe pozadí, které mám udělané v jednom frame aby se mohlo stále opakovat, dá se i to ňák zastavit?
weroro
Profil
A musí to stáť na prvom frame? Nestačí namiesto
this.stop();
zadať
unloadMovie(this);
?
RobertH
Profil
Bohužel ano, musí zůstat stát na prvním frame.
weroro
Profil
Tak v tom prípade, ak musí zastať stačí predsa použiť moju prvú verziu scriptu.
var MaxPlays:Number = 3; // Maximálny počet možných prehraní animácie
if (this.vars.plays == undefined)
{
    this.createEmptyMovieClip ("vars", this.getNextHighestDepth ());
    this.vars.plays = 1;
}
else if (this.vars.plays < this.MaxPlays)
{
    this.vars.plays++;
}
else
{
   this.stop();
   mc.gotoAndStop(1);
}

Kde mc je názov inštancie (instance name) toho movieclipu v ktorom máš animáciu ktorá sa prehráva aj keď banner stojí na prvom snímku. Treba zastaviť aj tú vnorenú animáciu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0