Avatar billede alexander_j Nybegynder
03. november 2006 - 17:02 Der er 16 kommentarer og
1 løsning

kald af klasser indbyrdes

Jeg har to klasser
Klasse 1 og klasse 2

Hvis jeg nu gerne vil kunne oprette objekter som kan kalde funktioner i hinanden indbyrdes - hvordan gøres dette så?

Jeg har forsøgt noget som jeg godt kan se kan opfattes som en uendelig løkke (ikke lykke), men er i tvivl om hvordan det så skal gøres:
class Tklasse1 {
    private var klasse2:Tklasse2;
}

class Tklasse2 {
    private var klasse1:Tklasse1;
}
Hvor det specifikke objekt defineres via en funktion.

Ved ikke om det blev noget vrøvl, men spørg, så skal jeg forsøge at forklare hvad jeg mener, hvis jeg kan ...
Avatar billede maqhem Nybegynder
03. november 2006 - 17:07 #1
1. Du skal først og fremmest importere klassen Klasse 2 i Klasse i og vice versa.
2. Så tror jeg, det duer...? :)
Avatar billede maqhem Nybegynder
03. november 2006 - 17:08 #2
Rettelse: Klasese 2 i Klasse 1

Jeg ved ikke helt, om det fungerer, men det tror jeg da.
Avatar billede alexander_j Nybegynder
03. november 2006 - 17:11 #3
hvordan importere jeg?
Avatar billede maqhem Nybegynder
03. november 2006 - 17:12 #4
Skriv dette allerøverst:

import Klasse 1
Avatar billede alexander_j Nybegynder
03. november 2006 - 17:17 #5
Jeg skrev følgende klasse:
lass Tklasse1 {
    import Tklasse2;
}

og fik følgende fejlmeddelelse:
**Error** C:\\Tklasse1.as: Line 3: Import statements are not allowed inside class or interface definitions.
        import Tklasse2;
Avatar billede alexander_j Nybegynder
03. november 2006 - 17:17 #6
Er det muligt at få dig til at lave et eksempel med to klasser hvor det er muligt at definere to objekter udfra som kan kalde hinandens funktioner?
Avatar billede maqhem Nybegynder
03. november 2006 - 17:43 #7
Klasse1.as:

import Klasse2
class Klasse1 {
    private var instansAfKlasse1:Klasse1 = new Klasse1();
}

Klasse2.as:

import Klasse1
class Klasse2 {
    private var instansAfKlasse2:Klasse2 = new Klasse2();
}

Jeg har ikke testet det selv, jeg jeg tror, det virker.
Avatar billede maqhem Nybegynder
03. november 2006 - 17:44 #8
Hov, lige en lille svipser:

Klasse1.as:

import Klasse2
class Klasse1 {
    private var instansAfKlasse2:Klasse2 = new Klasse2();
}

Klasse2.as:

import Klasse1
class Klasse2 {
    private var instansAfKlasse1:Klasse1 = new Klasse1();
}
Avatar billede mat Nybegynder
03. november 2006 - 17:56 #9
Du kan give dit indlejrede objekt en reference til det der indlejrer det-agtigt, jeg ved ikke om det er det du mener?

class A {
    private var b:B;
    public function A() {
        b = new B(this);
        b.shout();
    }
    public function shout() {
        trace("jeg er A");
    }
}


class B {
    private var _a:A;
    public function B(a:A) {
        _a = a;
        _a.shout();
    }
    public function shout() {
        trace("jeg er B");
    }
}


og lav et instans af A i din "main";

var a:A = new A();

Det burde skrive "jeg er A" og "jeg er B" i dit output.

(ikke testet jeg har ikke flash her, så forbehold for typos)

mvh mat
Avatar billede alexander_j Nybegynder
04. november 2006 - 13:47 #10
Det går fint, så længe klasserne hedder A og B, men hvorfor går det galt når jeg omdøber klasserne til TKlasse1 og TKlasse2?

class TKlasse1 {
    private var b:TKlasse2;
    public function TKlasse1() {
        b = new TKlasse2(this);
        b.shout();
    }
    public function shout() {
        trace("jeg er A");
    }
}

class TKlasse2 {
    private var _a:TKlasse1;
    public function TKlasse2(a:TKlasse1) {
        _a = a;
        _a.shout();
    }
    public function shout() {
        trace("jeg er B");
    }
}
Avatar billede alexander_j Nybegynder
04. november 2006 - 13:51 #11
Fejlen jeg får når jeg laver en 'check syntax' er:
**Error** C:\www\tryout\TKlasse1.as: Line 1: The name of this class, 'TKlasse1', conflicts with the name of another class that was loaded, 'TKlasse1'.
    class TKlasse1 {
Avatar billede mat Nybegynder
04. november 2006 - 14:45 #12
Umiddelbart lyder det som om der er to klasser med samme navn? Hedder din .as fil det samme som klassen?
Avatar billede alexander_j Nybegynder
04. november 2006 - 15:18 #13
Jæb - hver klasse er gemt i en .as-fil med navn efter klassen
Avatar billede alexander_j Nybegynder
04. november 2006 - 15:48 #14
Hmm underligt efter jeg har oprettet det som objekt i min normale film, så melder den pludselig ikke fejl længere.
Avatar billede alexander_j Nybegynder
04. november 2006 - 16:05 #15
Hmm det ser ud til at alting faktisk virkede fra første færd af - problemet var at jeg stolede for meget på 'check syntax' som åbenbart kræver at man laver et kald til klassen fra sin normale flashfilm før den virker for .as-filen også. Så det bliver noget med at rette i sin .as og så lige huske at køre et kald fra .swf før 'check syntax' virker rigtigt.

Kom med et svar begge to - I ledte mig helt sikkert på rette vej!
Avatar billede mat Nybegynder
04. november 2006 - 16:47 #16
aight
Avatar billede alexander_j Nybegynder
07. november 2006 - 11:14 #17
Så gider vi ikke vente længere :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester