Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-12-2006, 16:26   #16 (permalink)
nobody is perfect
 
Benutzerbild von richtsteiger
 
Registriert seit: Jul 2004
Ort: munich
Beiträge: 876
Ja, das ganze sieht dann so z. B. aus (hier mal ein Auszug):
PHP-Code:
private function writeMenu():Void {
  ...
  var 
self:Object this;
  for (var 
i:Number 1<= usedNode.childNodes.lengthi++) {
    var 
mcItem:MovieClip mcMain.attachMovie("main""MainMenuItem_" ii);
    ...
    
mcItem.onRelease = function() {
      
self.showSubmenu();
    };
    ...
  }
  ...

richtsteiger ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:27   #17 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Ich glaube, ich kenne dein Problem. Das hängt mit der Modellierung zusammen. dein dyn Menu ist kein MovieClip. Alle attacheden MovieClips werden also zwangsläufig an _root angehängt. Für mehr "Analyse" reicht die kurze Zeit grad net...

Ich empfehle dir folgendes: eine komplette objektorientierte Modellierung...
/** Enthält alle MovieClips für das Menü*/
class Dynamic Menu extends MovieClip {
var menubar:MenuBar;
var subMenu:SubMenu;
// Wird als einzelnes Item angehangen
var menuItem:MenuItem;
}
/** Menüleiste*/
class MenuBar extends MovieClip {
var subMenu:SubMenu;
var menuItem;
}
/** Untermenü, enthält Menüpunkte und andere Submenüs*/
class Submenü extends MovieClip {
var subMenu:SubMenu;
var menuItem;
}
/** Menüpunkt */
class MenuItem extends MovieClip {
var name:String;
}
Das ist natürlich stark abstrahiert, beispielsweise müsstest du die Referenzen auf MovieClips in sinnigerweise in Arrays speichern, wenn ein SubMenu mehrere MenuItems hat.

Du kannst dann Positionen relativ zu Vater- und Geschwisterknoten angeben und kannst dann die on-Event Methoden mit den ids verwenden. Oder du spezialisierst gleich das Ding durch Vererbung. Es kann nämlich sein, dass die on-Event Mothoden immer wieder überschrieben werden... bei eindeutigen seperaten Klassen durch class und sauberer OOP-Modellierung, passiert das nicht... Und schreiben musst du nicht mehr, eher weniger...

Geändert von Omega Psi (04-12-2006 um 16:28 Uhr)
Omega Psi ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:27   #18 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
Delegate.create( this, onPress );

sieht verdammt schick aus. Was ist das Da gehe ich wehmütig zurück zum Manual...
Das muss man nehmen damit die Referenz auf die Klasse nicht verloren geht.
Ohne dem delegate wird zwar die übergebene Funktion aufgerufen aber man hat in der Funktion dann keinen Zugriff auf die Klasse mehr, dies wird mit dem delegate umgangen!

Kannst dir ja mal die Methode "create" angucken...
__________________
ERROR: Signature is too large

Geändert von rendner[i] (04-12-2006 um 16:30 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:28   #19 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
Zitat von richtsteiger Beitrag anzeigen
Ja, das ganze sieht dann so z. B. aus (hier mal ein Auszug):
PHP-Code:
private function writeMenu():Void {
  ...
  var 
self:Object this;
      
mcItem.onRelease = function() {
      
self.showSubmenu();
    };
 

Dies wäre auch ein Fall für delegate, somit kann man sich die gespeicherte Referenz in self sparen.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:31   #20 (permalink)
nobody is perfect
 
Benutzerbild von richtsteiger
 
Registriert seit: Jul 2004
Ort: munich
Beiträge: 876
@rendner[i]
Sehr interessant. Man lernt aber auch nie aus. Danke für den Tipp.
richtsteiger ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:43   #21 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 11
Zitat:
Zitat von rendner[i] Beitrag anzeigen
Dies wäre auch ein Fall für delegate, somit kann man sich die gespeicherte Referenz in self sparen.
Mir fällt da gerade auf, dass die Delegate Sache echt gut ist, aber dann doch in der onPress Funktion wieder der Button unbekannt ist....

@Omega Psi
Die Lösung mit dem extenden von MovieClip ist auch gut. Vergesse immer wieder, dass alles in Flash Probleme macht, was kein MovieClip ist....
andi2003 ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:46   #22 (permalink)
nobody is perfect
 
Benutzerbild von richtsteiger
 
Registriert seit: Jul 2004
Ort: munich
Beiträge: 876
Wieso sollte der Button unbekannt sein? Versuchs doch mal in deinem onPress mit einem simplen
PHP-Code:
  trace(this._name); 
richtsteiger ist offline   Mit Zitat antworten
Alt 04-12-2006, 16:56   #23 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 11
Zitat:
Zitat von richtsteiger Beitrag anzeigen
Wieso sollte der Button unbekannt sein? Versuchs doch mal in deinem onPress mit einem simplen
PHP-Code:
  trace(this._name); 
Ich denke mal (zugegeben ohne Test, hab nur gerade die Reference angekuckt), dass Delegate eben den Scope ändert und damit der Button-Scope futsch ist.... aber ich probier das mal...
andi2003 ist offline   Mit Zitat antworten
Alt 04-12-2006, 18:03   #24 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Das stimmt der scope ist geändert somit dürfte this._name nicht den Instanznamen des Buttons liefern.
Da musst du dich dann festlegen was für einen scope genutzt werden soll.
__________________
ERROR: Signature is too large
rendner[i] 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 15:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele