Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-10-2006, 00:01   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 222
objekt in root aber wooo ?

hmm ...

mal wieder ne oop frage (seufz).

also ... ich erzeuge objekte von eigenen klassen (keine movieclips)
- obj1 wird in der hauptzeitleiste erzeugt.
- obj1 erzeugt im kontruktor obj2
- obj2 ruft im konstruktor eine methode von obj1 auf.

diese wir aber nicht gefunden ...

=> wo is der denkfehler ?
=> muss ich wenn ich von obj2 aus eine obj1 methode aufrufe über root gehen? ... also _root.obj1.sagWas()


gruß
ralph
Mediautilus24 ist offline   Mit Zitat antworten
Alt 09-10-2006, 00:43   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.750
Zitat:
Zitat von Mediautilus24 Beitrag anzeigen
- obj1 erzeugt im kontruktor obj2
Wie? Bitte Code zeigen..!
__________________
RTFM
Wie man Fragen richtig stellt.

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 09-10-2006, 00:45   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 222
seltsam ...

ich weiß zwar nicht warum ...
aber irgndwie is die methode von obj1 zu diesem zeitpunt wohl noch nicht da. denn wenn ich den methdenaufruf einfach auf nen key lege und später aktiviere findet ers.

aaber obj1 muss doch schon da sein, wenn er obj2 erzeugt ... argh ... grübel ...

okok ... also sollte jemand meinen nulloop durchblick erleuchten können, wär ich sehr dankbar ...

gruß die zweite
ralph
Mediautilus24 ist offline   Mit Zitat antworten
Alt 09-10-2006, 00:51   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 222
in zeitleiste:

var obj1 = new Obj1


Klassen:

PHP-Code:
class Obj1{
   var 
obj2:Obj2;
   public function 
Obj1() {
      
obj2 = new Obj2;
   }
    public function 
tuWas() {
       
trace("ich tu was");
    }
}


class 
Obj2{
   public function 
Obj2() {
      
_root.obj1.tuWas();
   }


so ungefähr dacht ich mir das ...
Mediautilus24 ist offline   Mit Zitat antworten
Alt 09-10-2006, 01:08   #5 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
ja klar... dadurch, dass du im konstruktor von Obj1 bereits versuchst, Obj2 zu instanziieren, wird das objekt von Obj1 erst dann verfügbar, wenn der konstruktor abgearbeitet ist... und der soll bei dir schon auf die noch nicht fertige instanz von Obj1 zugreifen. das geht so nicht, my friend...

was willst du denn erreichen??

cheers, thomas.
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org

Geändert von elysian (09-10-2006 um 01:35 Uhr)
elysian ist offline   Mit Zitat antworten
Alt 09-10-2006, 01:19   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Beiträge: 222
:-\ ...

ja ... also das bsp war etwas vereinfact.

eigentlich geht es darum ...
ich habe ein "board" Objekt (Spielfeld)
und ein "boardMaps" Objekt (beinhaltet mehrere vorlagen für spielfelder)

jetzt hat boardMaps eine Methode die mir ein bestimmtes Spielfeld zurückgibt.
und das wollte ich eigentlich direkt nach dem erzeugen abfragen.

also :
- game erzeugt boardMaps
- game erzeugt board
- boardMaps-methode "waehleFeld" wird direkt im kontruktor von board aufgerufen und wählt eben ein feld aus ...

aber auch das geht nicht ... gleiches problem ...

Geändert von Mediautilus24 (09-10-2006 um 01:27 Uhr)
Mediautilus24 ist offline   Mit Zitat antworten
Alt 09-10-2006, 01:31   #7 (permalink)
Supermassive
 
Benutzerbild von elysian
 
Registriert seit: Aug 2004
Ort: Frankfurt, Bornheim
Beiträge: 861
also game scheint wohl so eine art manager zu sein. dann rufe doch nach dem instanziieren von board und boardMaps von game aus in board eine methode aus, um das initiale feld zu setzen...

PHP-Code:
deinGame = new Game();
deineBoardMaps = new BoardMaps();
deinBoard = new Board();
deinBoard.initializeGame(deineBoardMaps.getFirstField()); 
...oder so. ist zwar nicht ganz oop, aber ich denke nicht, dass du den rest oop-style programmiert hast.

cheers, thomas.

Edit: vielleicht wäre initializeBoard() ein besserer name für die methode...
__________________
Personal » amenity*blogging » elysian.de » Flexpertise - Enterprise Flex Collaboration
Networks » Xing » ColdFusion Community
Everything Cairngorm »
cairngormdocs.org

Geändert von elysian (09-10-2006 um 01:36 Uhr)
elysian ist offline   Mit Zitat antworten
Alt 09-10-2006, 08:01   #8 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 923
Noch zurueck zu deinem ersten Entwurf: Generell sollte das Objekt obj2 keine Methoden von obj1 aufrufen, weil die Objekte sonst "eng gekoppelt" sind. Das versucht man zu vermeiden. Enge Koppelung fuehrt zum Beispiel dazu, dass beide Klassen immer nur im Verbund benutzt werden koennen.

hazy
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:04 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele