Avatar billede Slettet bruger
13. juni 2006 - 08:02 Der er 3 kommentarer

Flash og OOP

Hej eksperter.

Jeg har et mindre, forståelsesmæssigt problem, I sikkert kan svare på, hvis det er mig muligt at få defineret præcist nok. I øjeblikket arbejdes på et simpelt "vindue"-miljø - med flytbare vinduer, opbygget OOP.

Hieraki: Arkiv -> Vindue


Heruder ses en metode i klassen Vindue, der p.t. kaldes fra klassen Arkiv's constructor:

public function opretvindue(posA, posB, sizeC, sizeD, runding) {
  var dettevindue = _root.attachMovie("vinduesoriginal", "mitvindue", 5, {_x:posA, _y:posB});
       
  #include "drawRect.as"
  _root["mitvindue"].clear();
  _root["mitvindue"].lineStyle(1, this.ydrestregfarve);
  _root["mitvindue"].beginFill(indholdsfarve, indholdsgennemsigtighed);
  _root["mitvindue"].drawRect(posA, posB, sizeC, sizeD, runding);
  _root["mitvindue"].endFill();
  updateAfterEvent();
  _root["mitvindue"].beginFill(indholdsfarve, indholdsgennemsigtighed);
}


I constructoren i Arkiv står bl.a. følgende:

...{
  var vindue = new Vindue();
  vindue.opretvindue(10,10,350,150,0);
}...


Koden herover virker - såfremt jeg kun opretter ét vindue. Men har netop gjort det i OOP (er dog stadig nogenlunde novice på dette punkt), så der kan oprettes en stribe vinduer under forskellige instance-navne.
MEN: Jeg synes, OOP-konceptets forståelse vanskeliggøres af at Flash også er grafisk orienteret - og dermed på scenen kører sit eget hieraki.

Hvad er problemet?
Jo, ovenstående kode opretter et movieclip ved navn "mitvindue" i _root, hvilket gør at jeg ikke kan oprette mere end ét vindue og lidt undergraver OOP-konceptet, som jeg ser det. Så hvordan vil min "opretvindue"-metode ca. skulle se ud for at fungere hensigtsmæssigt?

Nogle gode råd til, hvordan jeg fortsætter mest hensigtsmæssigt?
Avatar billede mat Nybegynder
13. juni 2006 - 18:20 #1
Jeg har ikke arbejdet meget med flash's "ægte" objekt orientering. Men til dine spørgsmål ville jeg mene at du blot skal sende en streng til din funktion som nyt instancenavn og sørge for at den er unik for hvert instans.

Men jeg er ikke sikker på om du ikke blot kan bruge den reference som attachMovie returnerer til dit nye objekt, og holde den som en decideret instancevariabel (istedet for en metodelokal som nu)? Så kan du blot lave en getter til den ala:

public function windowPointer() returns pointer to movieclip {
return dettevindue;
}

Hvis du altså skal bruge denne pointer fra andre klasser (hvilket vel egentlig ikke burde være nødvendigt)?

(ovenstående er at betragte som pseudokode)

mvh mat
Avatar billede Slettet bruger
17. juni 2006 - 18:20 #2
Tak for dit svar.
Jeg har rodet med en række muligheder, jf. ovenstående kommentar. Det viser "gode takter", men jeg er allerede nu stødt ind i en del problemer...

Jeg gør eksempelvis brug af en stribe swf-filer, der indlæses efter behov - og interaktionen mellem disse filer (drag n' drop mellem flere filer, hændelser m.m.) kompliceres væsentligt, hvis ikke der holdes en meget stram, hierakimæssig struktur.

Nu er der heldigvis en sommerferie, hvor man kan sidde inde i det fine vejr... og kode :)

Mvh. Anders
Avatar billede mat Nybegynder
18. juni 2006 - 08:08 #3
Jeg forstår vist ikke rigtigt dit spørgsmål? Min kommentar knytter sig egentlig ikke til hierakier, eller decideret arkitektur. Den er vel nærmere rettet mod en teknisk detalje og/eller indkapsling?

mvh mat
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