Autor Zpráva
laik
Profil *
Chtěl bych ve Flashi udělat blikající text. Představoval bych si to tak, že by se po načtení swf souboru spustil "časovač" a po cca 3 vteřinách by se změnila barva textu (který má blikat). Po dalších 3 vteřinách by se barva změnila zase na původní hodnotu atd. Vím, jak to udělat v JavaScriptu, ale ve Flashi nevím. Netuším, jak nastavit "časovač" a jak pomocí skriptu změnit barvu textu. Dále je otázka, jestli je lepší text (jednalo by se o 2 slova) převést na křivky nebo ho mít jako dynamický text.
FlashManiac
Profil *
Je jedno jestli převedeš text na křivky nebo ho budeš přebarvovat v dynamickém poli. Pokud ale text nebudeš nějak často měnit nebo do něj nebudeš z praměnných neco dynamicky načítat doporučuju si text převést na Movie Clip(líp se s tím dělá)...
Takže dynamické nebo statické pole převedeš na MC, přiřadíš mu instanci a pro změnu barvy napíšeš

barva=new Color(instance clipu);
barva.setRGB(0xhexakod barvy);


Pro časovač si musíš zavést dvě proměnné:
var _root.cas:Number;

var _root.acas:Number;
var _root.bylo:Boolean=false;
_root.onLoad = function(){
_root.cas=getTimer();
}
_root.onEnterFrame=function(){
_root.acas=getTimer();
if ((_root.acas-_root.cas)>=3000){
if(_root.bylo==false){
zmenis barvu
_root.bylo=true;
_root.cas=getTimer();
}else{
zmenis barvu zpet
_root.bylo=false;
_root.cas=getTimer();
}
}
}

no tohle by mělo fungovat....
laik
Profil *
Dynamicku změnu barvy textu jsem zvládl, ale ten časovač je na mě bohužel příliš složitý.
Zeptám se tedy jinak. Mám jednoduchou animaci, která má 20 snímků.
V animaci mám text, který jsem změnil na MovieClip a nazval ho "text1".
Text je modrý a já chci, aby se od snímku č. 10 změnil na červený.
Do prvního snímku jsem vložil toto:
var barva = new Color(text1);

Do Movieclipu "text1" jsem vložil tyto příkazy:

onClipEvent(load)
{
i = 0;
}

onClipEvent(enterFrame)
{
i++;
if(i >= 10)
{
barva.setRGB(0xFF0000);
i = 0;
}
}

Proč to nefunguje?
FlashManiac
Profil
tohle je uplne zbytecný to psat takhle.. pokud to chces dělat takto tak to bude lepší zmenit barvu přímým nastavením.. přes klíčové snímky.. jak máš ten MC s textem,tak si najed na jeho časovou osu a do 10.snimku si natáhni frames, pak na 11.snimek hoď klíčový snímek a zase to natáhni do 20.snimku. Pak už si jen v té druhé polovině změň barvu textu...

Proč ti nefunguje:
nemás nadeklarovanou proměnnou třídy Color:
pokud se ti nelíbí můj předešlý návrh zkus tohle:

onClipEvent (load) {

var i:Number = 0;
var interval:Number=10;
var bylo:Boolean = false;
}
onClipEvent (enterFrame) {
i++;
if (i>=interval && bylo==false) {
barva = new Color(this);
barva.setRGB(0xFF0000);
i = 0;
bylo=true;
}else if(i>=interval && bylo==true){
barva = new Color(this);
barva.setRGB(0x0000FF);
i = 0;
bylo=false;
}
}


funguje to... ale nedoporučuju mít velký framerate dokumentu, jinak si budeš muset zvětšit interval
Kajdžas
Profil *
onClipEvent (load) {

var i:Number = 0;

var interval:Number=10;

var bylo:Boolean = false;

}

onClipEvent (enterFrame) {

i++;

if (i>=interval && bylo==false) {

barva = new Color(this);

barva.setRGB(0xFF0000);

i = 0;

bylo=true;

}else if(i>=interval && bylo==true){

barva = new Color(this);

barva.setRGB(0x0000FF);

i = 0;

bylo=false;

}

}

jde to udělat ať to přecházi plynule i tímto AS?

Jinak první příklad se mě taky nepodařilo rozběhnout...asi někde dělám chybu:(
FlashManiac
Profil
No jít by to mělo, ale je nutné si najít nějaký vztah mezi proměnnou(tato se bude měnit s EnterFrame, když má dojít ke změně) a mezi hexakódem barvy. Pak si jenom zadeklaruješ, interval kdy se má barva začít a končit měnit a mělo b yto být.Samozřejmě skript výše by potřeboval nějaké úpravy,ale princip ne v důsledku vlastně stejný..

Jinak nevím, jakto že ti ten můj skript nejde.. mě to funguje bez problémů. Nevím ale, jestli jsi ten kód nedával do _root pokud ano tak tam to nepojede, protože není zacílený MC(skript neví jaký MC má měnit), pokud to ale vložíš do MC, tak to musí fungovat.
Toto téma je uzamčeno. Odpověď nelze zaslat.