---
title: "Bakläxa"
type: "forum-thread"
url: "https://www.webforum.nu/amne/flash/179250-bakläxa"
topic: "Flash"
topic_url: "https://www.webforum.nu/amne/flash"
author: "PollyJuice"
published: "2009-07-03T17:18:14.000Z"
updated: "2009-07-05T07:11:47.000Z"
replies: 3
views: 492
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/flash/179250-bakläxa"
---

# Bakläxa

## #1 — PollyJuice, 2009-07-03T17:18Z

Hej,

jag har fått bakläxa på en flashuppgift. Jag har skapat ett memoryspel, och min lärare har bett mig att lägga till en knapp så att en spelare som tröttnar mitt i ett spel ska kunna gå tillbaka till "startsidan" och välja ny svårighetsgrad.

Testa här för att se hur det ser ut: <http://pollyjuice.se/Skola/memoryspel.swf>

Koden för börja om-knappen ser ut såhär: 

```
on (release) {
	gotoAndPlay("Start", "starten");
}
```

och det funkar utmärkt - bortsett från att rutorna från föregående spel ligger kvar när man går tillbaka till starten.

Rutorna skapas mha ett script som jag laddat ner från internet. Koden är: 

```
// Gamefield settings

// EDIT HERE
card_w = 100;
card_h = 100;
card_wdistance = 10;
card_hdistance = 10;

// STOP EDIT
card_dw = card_w + card_wdistance;
card_dh = card_h + card_hdistance;
row_card = Math.floor((Stage.width - card_wdistance) / card_dw);
col_card = Math.floor((Stage.height - card_hdistance) / card_dh);
n_card = col_card * row_card % 2 == 0 ? col_card * row_card : (col_card - 1) * row_card;
imgs_n = n_card / 2;

// CENTER THE IMAGE IN THE CARD
centerImage = function(target){
    target.front._visible = false
    target.front.container._x -= target.front.container._width / 2
    target.front.container._y -= target.front.container._height / 2
}
// ---------------------------------------------
 
empty = new Array();
function createCard(n, w, h) {
    empty.push(n);
    this.createEmptyMovieClip('card' + n, n);
    with (this['card' + n]) {
        lineStyle(0, 0x000000, 100);
        beginFill(0x000099, 60);
        moveTo(w / 2, 0);
        lineTo(w / 2, h / 2);
        lineTo(-w / 2, h / 2);
        lineTo(-w / 2, -h / 2);
        lineTo(w / 2, -h / 2);
        lineTo(w / 2, 0);
        endFill();
        createEmptyMovieClip('front', 1);
        front.createEmptyMovieClip('container', 2);
        front.createEmptyMovieClip('backgr', 1);
        with (front.backgr) {
            moveTo(-w / 2, -h / 2);
            lineStyle(0, 0x000000, 0);
            beginFill(0x333333, 100);
            lineTo(w / 2, -h / 2);
            lineTo(w / 2, h / 2);
            lineTo(-w / 2, h / 2);
            lineTo(-w / 2, -h / 2);
            endFill();
        }
        front.onEnterFrame = function() {
            tot = this.container.getBytesTotal();
            car = this.container.getBytesLoaded();
            if (tot == car && tot > 200) {
                this._parent._parent.centerImage(this._parent);
                delete this.onEnterFrame;
            }
        };
    }
}
selcards = [];
function placeImages() {
    act_img = 0;
    for (img = 0; img < imgs_n; img++) {
        for (k = 0; k < 2; k++) {
            act = Math.round(Math.random() * (empty.length - 1));
            this['card' + empty[act]].img_id = act_img;
            this['card' + empty[act]].front.container.loadMovie("Easy/" + act_img + ".gif");
            this['card' + empty[act]].onRelease = function() {
                this.rotateCard(0, 0);
                this.enabled = false;
                MovieClip.prototype.enabled = false;
            };
            empty.splice(act, 1);
        }
        act_img++;
    }
}
MovieClip.prototype.rotateCard = function(v, i) {
    this.operazione = v == 0 ? +0.1 : -0.1;
    this.incremento = i == 0 ? 100 : 10;
    selcards.push(this._name);
    this.onEnterFrame = function() {
        this.incremento += this.operazione;
        this._xscale = (100 * Math.sin(this.incremento));
        if (this._xscale > 0) {
            this.front._visible = v == 1 ? false : true;
        }
        if (this._xscale >= 99) {
            delete this.onEnterFrame;
            selcards.length < 2 ? MovieClip.prototype.enabled = true : null;
            v == 0 && selcards.length > 1 ? checkCards() : null;
        }
    };
};
function generateGameField(cards, distance, hdistance) {
    Ypos = card_h / 2 + hdistance;
    Xpos = card_w / 2 + distance;
    for (c = 0; c < cards; c++) {
        createCard(c, card_w, card_h);
        if (c % row_card == 0 && c > 0) {
            Ypos += this['card' + c]._height + hdistance;
            Xpos = card_w / 2 + distance;
        }
        this['card' + c]._x = Xpos;
        this['card' + c]._y = Ypos;
        Xpos += this['card' + c]._width + distance;
    }
    placeImages();
}
generateGameField(n_card, card_wdistance, card_hdistance);

function generateGameField(cards, distance, hdistance) {
    Ypos = card_h / 2 + hdistance;
    Xpos = card_w / 2 + distance;
    for (c = 0; c < cards; c++) {
        createCard(c, card_w, card_h);
        if (c % row_card == 0 && c > 0) {
            Ypos += this['card' + c]._height + hdistance;
            Xpos = card_w / 2 + distance;
        }
        this['card' + c]._x = Xpos;
        this['card' + c]._y = Ypos;
        Xpos += this['card' + c]._width + distance;
    }
    placeImages();
}

function createCard(n, w, h) {
    empty.push(n);
    this.createEmptyMovieClip('card' + n, n);
    with (this['card' + n]) {
        lineStyle(0, 0x000000, 100);
        beginFill(0x000099, 60);
        moveTo(w / 2, 0);
        lineTo(w / 2, h / 2);
        lineTo(-w / 2, h / 2);
        lineTo(-w / 2, -h / 2);
        lineTo(w / 2, -h / 2);
        lineTo(w / 2, 0);
        endFill();
        createEmptyMovieClip('front', 1);
        front.createEmptyMovieClip('container', 2);
        front.createEmptyMovieClip('backgr', 1);
        with (front.backgr) {
            moveTo(-w / 2, -h / 2);
            lineStyle(0, 0x000000, 0);
            beginFill(0x333333, 100);
            lineTo(w / 2, -h / 2);
            lineTo(w / 2, h / 2);
            lineTo(-w / 2, h / 2);
            lineTo(-w / 2, -h / 2);
            endFill();
        }
    }
}

function placeImages() {
    act_img = 0;
    for (img = 0; img < 16; img++) {
        for (k = 0; k < 1; k++) {
            act = Math.round(Math.random() * (empty.length - 1));
            this['card' + empty[act]].img_id = act_img;
            this['card' + empty[act]].front.container.loadMovie("Easy/" + act_img + ".gif");
            this['card' + empty[act]].front.onEnterFrame = function() {
                tot = this.container.getBytesTotal();
                car = this.container.getBytesLoaded();
                if (tot == car && tot > 200) {
                    this._parent._parent.centerImage(this._parent);
                    delete this.onEnterFrame;
                }
            };
            this['card' + empty[act]].onRelease = function() {
                this.rotateCard(0, 0);
                this.enabled = false;
                MovieClip.prototype.enabled = false;
            };
            empty.splice(act, 1);
        }
        act_img++;
    }
}

MovieClip.prototype.rotateCard = function(v, i) {
    this.operazione = v == 0 ? +0.1 : -0.1;
    this.incremento = i == 0 ? 100 : 10;
    selcards.push(this._name);
    this.onEnterFrame = function() {
        this.incremento += this.operazione;
        this._xscale = (100 * Math.sin(this.incremento));
        if (this._xscale > 0) {
            this.front._visible = v == 1 ? false : true;
        }
        if (this._xscale >= 99) {
            delete this.onEnterFrame;
            selcards.length < 2 ? MovieClip.prototype.enabled = true : null;
            v == 0 && selcards.length > 1 ? checkCards() : null;
        }
    };
};

score = 0;
this.createTextField('punti', -1, 500, 380, 0, 0);
punti.autoSize = true;
punti.text = 0;
function checkCards() {
    if (this[selcards[0]].img_id == this[selcards[1]].img_id+8 || this[selcards[0]].img_id == this[selcards[1]].img_id-8) {
        score++;
        punti.text = score;
        eval(selcards[0])._visible = eval(selcards[1])._visible = false;
    } else {
        eval(selcards[0]).rotateCard(1, 1);
        eval(selcards[1]).rotateCard(1, 1);
        eval(selcards[0]).enabled = eval(selcards[1]).enabled = true;
    }
    selcards = [];
    MovieClip.prototype.enabled = true;
		if (score ==8)	{
		punti.text = "Grattis!"
		}
}
```

Kan någon tipsa mig om hur jag ska få bort alla rutorna när man trycker på börja om-knappen? Kanske man kan lägga in någon kod i början som kollar om börja om-knappen har tryckts ned, i annat fall körs koden..? Eller finns det något bättre sätt?

Och kan någon också tipsa mig om hur jag kan förvandla sluta-knappen så att den stänger fönstret när man trycker på den? Jag trodde det var close(), men tydligen inte...

Permalänk: https://www.webforum.nu/p/179250

## #2 — foppa, 2009-07-04T14:47Z

Nu är det mer risk för att låta lite elak jag skriver.. Tanken med en Flashuppgift är sannolikt att du skall förbättra dina kunnskaper i programmet. Det verkar mer som att du använder 'lånad' och gammal kod som du inte riktigt har inblick i vad den gör. Jag skulle föreslå att backa bandet något och försöka lösa uppgiften på egen hand. Hjälpfilen i Flash är inte fantastisk, men oftast finns svaren där.

Lycka till!

Permalänk: https://www.webforum.nu/p/2192139

## #3 — PollyJuice, 2009-07-05T06:54Z

Nja, vitsen med uppgiften var att skapa ett dator-relaterat program/spel/forum/nåt i den stilen anpassat för utvecklingsstörda. Det handlade alltså inte om att jag skulle bli duktigare på Flash, för jag fick använda vilket program jag ville.
Läraren hade inget emot att jag använde en lånad kod, huvudsaken var att utvecklingsstörda barn lätt kunde förstå hur spelet skulle spelas.

Visst kan jag kolla i hjälpfilen, men om någon har något tips om hur detta kan lösas så tar jag gärna emot det.

Permalänk: https://www.webforum.nu/p/2192177

## #4 — PollyJuice, 2009-07-05T07:11Z

Glöm allt - jag fick ett tips om att använda 

```
on (release) {
    loadMovieNum("memoryspel.swf", 0);
}
```

på ett annat forum, och det funkar som jag vill ha det. Tack iallafall. :birp

Permalänk: https://www.webforum.nu/p/2192178

---

Tråden på webben: https://www.webforum.nu/amne/flash/179250-bakläxa
