Teil 4: level2Item - Menüpunkte der zweiten Ebene
Selbstverständlich sind die Menüpunkte der zweiten Ebene genau wie Level1Item von der Klasse MenuItem abgeleitet. Der Unterschied zur Klasse Level1Item ist sehr gering - ein schönes Beispiel, wie leicht sich die Klasse MenuItem anpassen und erweitern lässt.
Actionscript
class Level2Item extends MenuItem {
public function Level2Item(values :Array, position :Number){
super(values, position);
}
public function draw() :Void {
//MovieClip erstellen und in _mc speichern
var layer :Number = _root.getNextHighestDepth();
_root.attachMovie("menuItem", "menuItem2_"+layer, layer);
this._mc = _root["menuItem2_"+layer];
//Richtig positionieren
this._mc._x = 30 + this._parent._mc._width;
this._mc._y = 30 + this._parent._position *
this._parent._mc._height + this._position *
this._mc._height;
//Text ändern
this._mc.linktext.text = this._values["title"];
//verstecken
this._mc._visible = false;
super.draw();
}
private function press() :Void {
getURL(this._values["link"]);
}
private function rollOver() :Void {
//Falls irgendwo noch leve2Items aktiv, dann inaktiv
for(var i:String in this._parent._subItems) {
this._parent._subItems[i].rollOut();
}
this._mc.gotoAndStop(2);
this._parent.displaySubItems();
}
private function rollOut() :Void {
this._mc.gotoAndStop(1);
this._parent.hideSubItems();
}
private function display() :Void {
this._mc._visible = true;
}
private function hide() :Void {
this._mc._visible = false;
}
}
Wieder gibt es die gleichen Methoden wie in Teil 3, jedoch etwas abgeändert. Da sich die Menüpunkte der zweiten Ebene relativ zur Position der 1. Menüebene aufbauen sollen, wurden die Koordinaten des Überpunktes dazugerechnet (Zugriff über _parent). Es ist wichtig, dass die MovieClips direkt aneinander grenzen, da sonst die rollOver() bzw. rollOut() Methoden nicht funktionieren! Der Einfachheit halber wurde der gleiche MovieClip aus der Bibliothek verwendet wie er auch schon bei der ersten Menüebene Verwendung fand.
rollOver() und rollOut() steuern diesmal nicht die die eigenen Untermenüpunkte sondern die des _parents - also quasi sich selbst. Wird nämlich ein Menüpunkt der zweiten Ebene mit der Maus verlassen, sollen ja alle Unterpunkte verschwinden. Gäbe es noch eine dritte Ebene, dann müsste man selbstverständlich auf die eigenen SubItems zugreifen.
Die display() und hide() Methoden blenden die Menüpunkte lediglich ein bzw. aus. In einem späteren Tutorial lassen wir uns noch spannendere Sachen einfallen.














