PDA

Volledige versie bekijken : variabele gebruiken als n deel van de URL in getURL


chris1234
%Europe/Berlin %021 %2005, 01:30
Hey, hier nog een post, t zou handig zijn als ik die liedjes met variabelen in AS kon zetten, dan wordt t een hoop overzichtelijker..
Ik heb als ASin de keyframe nu:
voor de variabele:
var liedje1 = liedje(huppeldepup remix).mp3

voor de link:
this.link1.onRelease = function() {getURL("http://www.makuza.com/stefan/liedjes/(hier moet die variabele, liedje1)");};
Ik weet niet hoe ik die variabele daar in moet zetten, ik heb geprobeerd gwoon liedje1 te zetten, maar dan denkt flash dat t een onderdeel van de url is..

The_One
%Europe/Berlin %024 %2005, 01:35
hoi,

Probeer dit eens:
var liedje1 = "liedje(huppeldepup remix).mp3";
this.link1.onRelease = function() {
getURL(["http://www.makuza.com/stefan/liedjes/"+liedje1]);
};

Suc6 verder :)!

Dauntless
%Europe/Berlin %032 %2005, 01:46
hoi,

Probeer dit eens:
Nope, gaat niet werken...

Een uitleg waarom: Het is waar dat als je een movieclip of een property of een var van een movieclip wilt kennen, waarbij de naam van die property/mc/whatever dynamisch is, dat je dan MovieClip["blabla"+i]; gebruikt. Maar dat is niet gewoon omdat [vierkante haakjes] hetzelfde zouden zijn als het oude eval(). Alle flash classes stammen af van de Object Class. De object class kan je gebruiken als een associatieve array: myObject["naam"] = "Dauntless"; .
Aangezien de MovieClip class afstamd van de Object class erft het ook zijn methodes en zo. Daarom kan je een beetje de MovieClip class ook als associatieve array gebruiken: myMc["eenVar"] = "Dauntless"; . Omdat wat tussen de [vierkante haakjes] staat eerst word verwerkt alvorens aan het pad toe gevoegd te worden, kan je deze schrijf wijze gebruiken om gemakkelijk dynamische namen te gebruiken...

Dat gezegd zijnde: [vierkante haakjes] op zich werken dus niet. Ze zijn altijd vooraf gegaan door een object of een Mc (of iets anders misschien zelfs (ja, een array :D)), maar op zich werken ze niet omdat het een schrijfwijze is, geen functie...

Ondanks dat eval() deprecated is kan je hem hier misschien het best gebruiken...


var liedje1 = "liedje(huppeldepup remix).mp3";
this.link1.onRelease = function() {
getURL(eval("http://www.makuza.com/stefan/liedjes/"+liedje1));
};

Veel success :)

The_One
%Europe/Berlin %483 %2005, 12:35
Nope, gaat niet werken...


Bullsh*t, ik heb het ff getest, en eval() werkt geen eens [mss dat ik het fout doe hoor, in dat geval: sorry :)]

Check dit maar eens:
begin = "http://www.";
eind = ".nl";
getURL([begin+"flashfocus"+eind]);
// werkt

getURL(begin+"flashfocus"+eind);
//werkt ook


Ik heb bovenstaand AS geprobeerd, en het werkt :)

Roenes
%Europe/Berlin %687 %2005, 17:29
Waarom vierkante haken gebruiken? Totaal overbodig in dit geval. :)

En Dauntless waarom eval gebruiken? 2 strings samenvoegen naar een url hoeft toch geen eval te hebben ;)

Dauntless
%Europe/Berlin %745 %2005, 18:53
En Dauntless waarom eval gebruiken? 2 strings samenvoegen naar een url hoeft toch geen eval te hebben ;)
Da's idd ook overbodig, sorry :).

En The_One: :eek: . Naar mijn weten gaat dat in tegen alle logica :confused: . Echt vreemd... Maarja, het werkt dus inderdaad :). Sorry voor mijn reactie dan , ik had het beter eerst even zelf moeten testen...

Maar kan iemand me dan uitleggen waarom dat werkt? :confused:

Voetsjoeba
%Europe/Berlin %814 %2005, 20:33
De vierkantje haakjes zijn op zich de Array constructors. [] maakt altijd een array aan, dat kan je ook testen:

trace(["http://www.makuza.com/stefan/liedjes/"+liedje1] instanceof Array); //true

Wat je hier dus doet, is een Array maken met 1 waarde, namelijk "http://www.makuza.com/stefan/liedjes/"+liedje1. Omdat de array slechts 1 waarde heeft, gebruikt Flash automatisch die waarde voor getURL.

Bij associatieve array referencing (bv. object["foo"+i]) gebeurt net hetzelfde: "foo"+i wordt eerst geparsed tot bv foo0 als zijnde een String, en die String wordt dan gebruikt als property van object. Het enige speciale hieraan is eigenlijk de manier waarop Flash die waarde als property gebruikt, voor de rest is er niets aan.

Dauntless
%Europe/Berlin %820 %2005, 20:40
Eeey Voets!

Thx voor je uitleg! Ik wist echt niet dat [ ] opzich ook kon (zonder dus op een object of zo uit te oefenen).

Thx!

The_One
%Europe/Berlin %906 %2005, 22:45
En The_One: . Naar mijn weten gaat dat in tegen alle logica . Echt vreemd... Maarja, het werkt dus inderdaad . Sorry voor mijn reactie dan , ik had het beter eerst even zelf moeten testen...
Geef niet man :)


Waarom vierkante haken gebruiken? Totaal overbodig in dit geval.
Na het testen kwam ik er ook achter ja :). Maar mn 1e post had ik getypt, zonder te testen [omdat ik wist dat het werkt]

@Voetsjoeba; Bedankt voor de uitleg :)

chris1234
%Europe/Berlin %024 %2005, 01:34
Hey,
thanx voor de vele reacties!
k ga dr morgen direct mee aan de slag!

Roenes
%Europe/Berlin %460 %2005, 12:03
Thx voor je uitleg! Ik wist echt niet dat [ ] opzich ook kon (zonder dus op een object of zo uit te oefenen).Wel hoor dat wist je wel ;) Jij weet ook dat je een array zo kan aanmaken:
var arr:Array = [];Dan maak je ook een array aan en die sla je op. Ik wist alleen niet dat het op deze manier ook kon in een getURL. Weer wat geleerd :)

Dauntless
%Europe/Berlin %581 %2005, 14:56
Wel hoor dat wist je wel ;) Jij weet ook dat je een array zo kan aanmaken:
var arr:Array = [];Dan maak je ook een array aan en die sla je op. Ik wist alleen niet dat het op deze manier ook kon in een getURL. Weer wat geleerd :)
Maar dan sla je de referentie naar die array dus op in 'arr' . Als je gewoon ["dit"] doet, sla je de referentie nergens op... (Ok, verwarrend :p). Vanaf nu weet ik dus gewoon dat dat ook werkt :D

Roenes
%Europe/Berlin %676 %2005, 17:14
klopt, maar hetgeen wat mij verbaasde is dat een getURL wel uit de voeten kan met een array als parameter (als deze een length van 1 heeft en een string bevat) :)

Dauntless
%Europe/Berlin %678 %2005, 17:16
klopt, maar hetgeen wat mij verbaasde is dat een getURL wel uit de voeten kan met een array als parameter (als deze een length van 1 heeft en een string bevat) :)
Welja, omdat flash eendert waar dan de eerste waarde neemt...