PDA

Volledige versie bekijken : Vraagje: willekeurige afb.


maldo
%Europe/Berlin %588 %2005, 15:08
hallo,

Ik heb een flash site gemaakt waarin externe tekst en afbeeldingen worden ingeladen. Als de homepagina wordt vernieuwd wil ik dat er elke keer een andere (willekeurige) afb. wordt ingeladen (bijv. uit een map die ik heb aangegeven). Is hier een script voor?

Alvast bedankt,

Michel Maldonado

worldwidewiebe
%Europe/Berlin %597 %2005, 15:21
goeie gedeelte alleen dubbel posten is niet gewenst

theFlashWizard
%Europe/Berlin %612 %2005, 15:42
hoe heb je tot nu toe random
http://www.flashfocus.nl/forum/showthread.php?t=279
proberen te combineren met jou huidige script?
of wat voor script gebruik je nu om die afbeeldingen in te laden?

Xanthos
%Europe/Berlin %615 %2005, 15:46
Ik heb het ooit heb gedaan is als volgt:
een xml aangemaakt met daarin de links naar alle afb die je kan inladen, dus bvb zo
<fotoalbum>
<foto url="pics/foto1.jpg" />
<foto url="pics/foto2.jpg />
...
</fotoalbum>

En dan laad ik in flash de xml in en laad een random foto.
var x:XML = new XML();
x.ignoreWhite = true;
x.onLoad = function(){
fotoalbum = this.firstChild.childNodes;
nr = random(xml.length)
link = fotoalbum[nr].attributes.link;
loadMovie(link,targetClip);
};
x.load(fotos.xml);

Je kan natuurlijk ook alle links naar foto's in een array steken, maar dan moet je elke keer je swf opnieuw uploaden als je een foto wilt toevoegen of verwijderen. Nu moet je enkel je xml aan te passen.

Flasher
%Europe/Berlin %671 %2005, 17:06
Xanthos, er zitten wel een paar fouten in je script (vrij veel voor 9 regels code)

Dus ik geef maar even een verbeterde versie:

var x:XML = new XML();
x.ignoreWhite = true;
x.onLoad = function(){
var fotoalbum:Array = this.firstChild.childNodes;
var nr:Number = Math.floor(Math.random()*fotoalbum.length);
var url:String = fotoalbum[nr].attributes.url;
targetClip.loadMovie(url);
};
x.load("fotos.xml");

maldo
%Europe/Berlin %624 %2005, 15:59
Bedankt mensen, nu kom ik dr wel uit. dit is btw t script wat ik gebruik om tekst en afb in te laden:
myLoadVars = new LoadVars();
myLoadVars.load("externtext.txt");
myLoadVars.onLoad = function(ok) {
if (ok) {
welkom.text = this.welkom;
}
}

http://www.designtist.nl/michel
portfolio nog niet af

Xanthos
%Europe/Berlin %514 %2005, 13:21
[QUOTE=Flasher]Xanthos, er zitten wel een paar fouten in je script (vrij veel voor 9 regels code)
QUOTE]

Zoals ik het heb geschreven werkt het ook hoor. Probeer maar eens. (Maar je mag me natuurlijk altijd verbeteren als ik fout ben ;))

Xanthos
%Europe/Berlin %516 %2005, 13:24
Xanthos, er zitten wel een paar fouten in je script (vrij veel voor 9 regels code)


De manier waarop ik het heb geschreven werkt ook hoor. Ik heb sommige dingen gewoon anders geschreven als jou, maar het komt op hetzelfde neer. Maar als ik fout zit mag je me altijd verbeteren. Iedereen leert uit zen fouten. Naar het schijnt toch ;).

Flasher
%Europe/Berlin %567 %2005, 14:37
Het bestaat niet dat dit script werkt, mss heb je het fout overgetypt ofzo:
var x:XML = new XML();
x.ignoreWhite = true;
x.onLoad = function(){
fotoalbum = this.firstChild.childNodes;
nr = random(xml.length)
link = fotoalbum[nr].attributes.link;
loadMovie(link,targetClip);
};
x.load(fotos.xml);
- je vraagt xml.length op, maar de array xml bestaat niet
- je zoekt naar een link attribuut ipv een url attr.
- er staan geen quotes om de string fotos.xml

Sap
%Europe/Berlin %613 %2005, 15:43
Om willekeurige afbeeldingen te laten zien heb ik laatst het vorige script gebruikt:



var aaa = 2533 - 2369;
// het verschil berekenen tussen de eerste en de laatste foto
var aa = random(aaa);
// random getal van het verschil
var a = aa + 2368;
// het random getal + 2368 omdat de eerste foto getal 2369 is.

var foto = "http://members.lycos.nl/juglingsap/galery/mini-DSC0"+ a +".JPG";
// Flash creeert de URL van het plaatje

x_txt.text = x; // laat het foto nummer zien
foto_txt.text = foto; // laat de URL zien

container.loadMovie(foto); // foto wordt geladen in de movieclip CONTAINER



Maar het random getal kiezen kan ook makkelijker, als je een manier weet om een random getal tussen de 2369 en de 2533 te krijgen. Ik weet niet hoe dat moet, dus doe ik het met een omweg.

O ja , achter mini-DSC staat een 0 , deze hoort bij het getal, maar flash laat deze weg als je hem vooraan in een variabele zet, dus klopt het nummer niet meer.

nog even de file waarin ik deze code heb gebruikt. En als het plaatje niet laad zou dat kunnen komen dat die niet bestaat. Tussen de foto's DSC02369 en DSC02533 een paar nummers niet bestaan omdat deze foto's verwijderd zijn.


Als dit verwarrend is heb ik niets gezegd :P

Dauntless
%Europe/Berlin %619 %2005, 15:51
Maar het random getal kiezen kan ook makkelijker, als je een manier weet om een random getal tussen de 2369 en de 2533 te krijgen. Ik weet niet hoe dat moet, dus doe ik het met een omweg.

Simpele functie:
function getRandom(lower:Number, higher:Number)
{
return Math.floor(Math.random()*(higher - lower))+lower;
}
//
var randomGetal = getRandom(2369,2533);

Het gebruik van random() is btw verouderd ...

Sap
%Europe/Berlin %638 %2005, 16:19
Het gebruik van random() is btw verouderd ...

Zolang het werkt, blijf ik hem gebruiken :D ;)
maar bedankt voor het scriptje, ik ben namelijk een amateur met AS dus probeer ik zomaar
wat. :)

Flasher
%Europe/Berlin %671 %2005, 17:07
random() is weliswaar verouderd, maar flash gebruikt hem zelf ook:

flash directory/en/configuration/ActionScript/AsMath.xml

Daarin staat de werking van alle Math.* functies
Hieronder staat het Math.random() gedeelte

<function name="random">
- <![CDATA[ random(2147483647)/2147483647

]]>
</function>

Xanthos
%Europe/Berlin %689 %2005, 17:33
Het bestaat niet dat dit script werkt, mss heb je het fout overgetypt ofzo:

- je vraagt xml.length op, maar de array xml bestaat niet
- je zoekt naar een link attribuut ipv een url attr.
- er staan geen quotes om de string fotos.xml

Ge hebt gelijk dat het ni kan werken... stomme foutjes met snel te willen zijn... waarvoor mijn oprechte excuses ;)