Hirdetés

Új hozzászólás Aktív témák

  • fordfairlane
    veterán

    Már megoldottam.

    Nem. Van egy mappa. Ebben csak képek vannak. A listFiles a Taskerben valami ilyesmit ad vissza:

    /Mappa/Kep1.jpg
    /Mappa/Kep2.jpg
    […]

    Na nekem az az ötletem támadt, hogy nyomok egy splittet a \n-re, azaz a sortörésekre és ezt belementem 'i' -be. Ekkor ha pl a /Mappa/Kep1.jpg-t szeretném kiiratni, akkor az i[0] kell nekem. Tehát a tömb nulladik eleme. Namost ennek a tömbnek a lenghtje alapján generáltatok vele egy random számot. (Math.floor) Majd ezt a random számot állítom be háttérnek. Eddig működött a dolog. Viszont azt is szerettem volna, ha az előző háttér tömbbeli értékét ne sorsolja ki még 1x, illetve nulla se legyen az a szám, amit így kapok, erre kellett volna nelem a for. A for azt nézte volna meg, hogy az előzőleg "I" Taskeres globális változóval egyezik-e a most generált szám. Ha igen, akkor addig futtatja, míg más nem lesz a kapott eredmény. Csak közbe rájöttem, hogy az amit összedobtam több sebből vérzik. (Pl a setGlobal a forban :Y) Ezeket közben kijavítottam és while-ra cseréltem a for-t. Ezt sikerült összehozni, ami működőképesnek látszik:

    var Hatterek =listFiles("Hatterek", false).split("\n");

    var number = Math.floor( Math.random()*(Hatterek.length));

    while(number == global('OldScrBcg')) {
    var number = Math.floor(Math.random()*(Hatterek.length));
    }

    while(number == 0) {
    var number = Math.floor(Math.random()*(Hatterek.length));
    }



    setGlobal('OldScrBcg',number);

    setWallpaper(Hatterek[number]);

    1. a var kulcsszót egyszer kell használni a number nevű változó esetében, mondjuk mikor először adsz neki értéket.
    2. ha csak egy kép van, a while végtelen ciklust eredményez.
    3. Ha number nem lehet nulla, mert a setWallpaper nem nullával indexeli a háttérképeket, akkor egyszerűbb a randomszám generálást úgy megírni, hogy egytől kezdődően dobjon számokat.

    Math.floor(Math.random() * (max - min)) + min;

    azaz jelen esetben

    Math.floor(Math.random() * (Hatterek.length - 1)) + 1;

    4. Elég a while ciklusban randomszámot generálni, nem kell két Math.random sor.

    Szóval ebben a formában valami ilyesmi célszerűbb:

    var Hatterek = listFiles("Hatterek", false).split("\n");
    var number;

    if(Hatterek.length > 1) {
    while(number == global('OldScrBcg')) {
    number = Math.floor(Math.random() * (Hatterek.length - 1) + 1);
    }
    } else if(Hatterek.length == 1) {
    number = 1;
    }

    if(number) {
    setGlobal('OldScrBcg', number);
    setWallpaper(Hatterek[number]);
    }

Új hozzászólás Aktív témák