[ aleksandar_vs @ 05.08.2011. 11:34 ] @
Pozdrav,

potrebna mi je mala pomoć oko sledećeg flashića:

http://users.hemo.net/aleks/primer.swf

ono što hoću je da se izabrani link bolduje, tj. ako kliknem na prvi link da mi se tekst Restoran bude boldovan, kako bi znali koja je stranica aktivna.

Kod koji pokreće celu stvar (učitava externe linkove) je sledeći:

Code:

var Xpos:Number = 0;
var Ypos:Number = 0;
var swf:MovieClip;
var loader:Loader = new Loader();
var boldText:TextFormat = new TextFormat();
with (boldText) {
//font = "Verdana";
//size = 9.8;
//color = 0x000000;
bold = true;
}

var defaultSWF:URLRequest = new URLRequest("swfs/Restoran.swf");

loader.load(defaultSWF);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


// Btns Universal function
function btnClick(event:MouseEvent):void {
    
    removeChild(loader);
    var newSWFRequest:URLRequest = new URLRequest("swfs/" + event.target.name + ".swf");
    loader.load(newSWFRequest);
    loader.x = Xpos;
    loader.y = Ypos;
    addChild(loader);

    
    var tekst:TextField = "tekst_" + event.target.name;
    tekst.setTextFormat(boldText);
}


// Btn listeners
Restoran.addEventListener(MouseEvent.CLICK, btnClick);
Frizer.addEventListener(MouseEvent.CLICK, btnClick);
Ordinacija.addEventListener(MouseEvent.CLICK, btnClick);


a problem se javlja oko sledece linije:


Code:

    var tekst:TextField = "tekst_" + event.target.name;
    tekst.setTextFormat(boldText);


koja mi javlja sledeću grešku:

1067: Implicit coercion of a value of type String to an unrelated type flash.text:TextField.


E sad, kapiram da mi javlja da sam omašio tip varijable, tj. da ne mogu da spajam babe i žabe u nazivu TextFielda, ali ne znam kako drugačije da mu zadam da bolduje pošto moram da izvučem taj event.target.name da bih boldovao izabrani link?


Izvinjavam se, verovatno je trivijalno pitanje :(

Hvala!


[ MenOfHonor @ 05.08.2011. 13:00 ] @
Najjednostavnije bi bilo da renderuješ tekst kao HTML i da koristiš <b> tag:
Code:
event.target.htmlText = "<b>"+event.target.text+"</b>";

Na ovaj način će tekst biti boldovan kada se na njega klikne. Jedino što još moraš da uradiš je da proveriš na koji je tekst kliknuto kako bi uklonio bold sa ostalih linkova:
Code:
if(event.target.text == "Restoran")
    {
        Frizer.htmlText = "Frizerski atelje";
        Ordinacija.htmlText = "Ordinacija";
    }
    else if(event.target.text == "Frizer")
    {
        Restoran.htmlText = "Restoran";
        Ordinacija.htmlText = "Ordinacija";
    }
    else
    {
        Restoran.htmlText = "Restoran";
        Frizer.htmlText = "Frizerski atelje";
    }

U tvom primeru si napravio grešku jer si pokušao tekst direktno da dodaš TextField objektu a ne text svojstvu. To si trebao da uradiš ovako:
Code:
var tekst:TextField = new TextField();
tekst.text = "tekst_" + event.target.name

I na kraju ne zaboravi da ga dodaš u display listu kako bi bio vidljiv:
Code:
addChild(tekst);
[ aleksandar_vs @ 05.08.2011. 14:36 ] @
Hvala Bojane,

nije proslo, verovatno sam jos nesto zeznuo u kodu... kad dodam taj red ne javlja mi gresku odmah, ali kad kliknem na link onda mi se pojavi:
<b>Error #1069: Property text not found on flash.display.SimpleButton and there is no default value </b>

Probao sam da mu zadam default value za event.target.htmlText ali nije proslo, verovatno je nesto jos u pitanju sto ne vidim u kodu... zakacio sam i .fla fajl pa ako te ne mrzi pogledaj, ali predpostavljam da to nesto ne ide jedno sa drugim...

link za .fla fajl


U svakom slucaju hvala ti na pomoci, i na objasnjenju - otprilike nazirem u kom pravcu treba da googlam :)
[ MenOfHonor @ 05.08.2011. 16:28 ] @
Problem je u tome što ti pokušavaš da setuješ htmlText tekst za taster, a tekst ti se nalazi u dinamičkom tekst polju. S obzirom na to da želiš da se prikaže ruka kada se pređe kursorom preko teksta, a kako TextField klasa nema svojstvo koje joj to omogućava moramo tekst polje staviti unutar simbola koji ima tu mogućnost (kao što je Button ili MovieClip). U ovom slučaju najjednostavnije bi bilo da koristimo Sprite. Stavio sam komentare iznad linija koda koji sam dodao kako bi ti bilo jasnije:
Code:
var Xpos:Number = 0;
var Ypos:Number = 0;
var swf:MovieClip;
var loader:Loader = new Loader();

// kreiramo 3 sprajta za tekstualna polja
var Restoran:Sprite = new Sprite();
var Frizer:Sprite = new Sprite();
var Ordinacija:Sprite = new Sprite();
// za prikazivanje ruke prelaskom preko teksta
Restoran.buttonMode = Frizer.buttonMode = Ordinacija.buttonMode = true;
tekst_Restoran.mouseEnabled = tekst_Frizer.mouseEnabled = tekst_Ordinacija.mouseEnabled = false;
// dodeljujemo ime svakom sprajtu
Restoran.name = "Restoran";
Frizer.name = "Frizer";
Ordinacija.name = "Ordinacija";
// dodajemo sprajtove na stage
addChild(Restoran);
addChild(Frizer);
addChild(Ordinacija);
// dodajemo tekstualna polja u sprajtove
Restoran.addChild(tekst_Restoran);
Frizer.addChild(tekst_Frizer);
Ordinacija.addChild(tekst_Ordinacija);

var defaultSWF:URLRequest = new URLRequest("swfs/Restoran.swf");

loader.load(defaultSWF);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Btns Universal function
function btnClick(event:MouseEvent):void
{
    removeChild(loader);
    var newSWFRequest:URLRequest = new URLRequest("swfs/" + event.target.name + ".swf");
    loader.load(newSWFRequest);
    loader.x = Xpos;
    loader.y = Ypos;
    addChild(loader);
    // proveravamo na koji je sprajt kliknuto i u skladu sa tim boldujemo tekst koji se u njemu nalazi
    if (event.target.name == "Restoran")
    {
        tekst_Restoran.htmlText = "<b>Restoran</b>";
        tekst_Frizer.text = "Frizerski atelje";
        tekst_Ordinacija.text = "Ordinacija";
    }
    else if (event.target.name == "Frizer")
    {
        tekst_Restoran.text = "Restoran";
        tekst_Frizer.htmlText = "<b>Frizerski atelje</b>";
        tekst_Ordinacija.text = "Ordinacija";
    }
    else
    {
        tekst_Restoran.text = "Restoran";
        tekst_Frizer.text = "Frizerski atelje";
        tekst_Ordinacija.htmlText = "<b>Ordinacija</b>";
    }
}

// Btn listeners
Restoran.addEventListener(MouseEvent.CLICK, btnClick);
Frizer.addEventListener(MouseEvent.CLICK, btnClick);
Ordinacija.addEventListener(MouseEvent.CLICK, btnClick);
[ aleksandar_vs @ 05.08.2011. 19:13 ] @
Jasno mi je šta sam pobrkao... Pretpostavio sam da je nešto tako ali nemam dovoljno iskustva (a očigledno i znanja) da dokučim šta je :(

Hvala ti još jednom puno na objašnjenju i trudu!


Veliki pozdrav od Dummija ;)

[ MenOfHonor @ 05.08.2011. 21:10 ] @
Nema problema, uvek je tako na početku, a vežba čini čuda.