| Gimbel Deluchs
Registriert seit: Apr 2004 Ort: Wieder da!
Beiträge: 153
| DropDown Menu: Problem mit Transparenz
Moin Moin,
erstelle gerade für einen Kunden ein dynamisches DropDown Menu, später sollen die einzelnen MenuPunkte und Verknüpfungen aus XML ausgelesen werden, soweit bin ich aber noch nicht.  (inspired by Warrentmasters XML-Menu)
Zur Funktionsweise:
Es liegen jeweils unter einem Hauptmenupunkt die Mcs der Untermenupunkte. Diese haben einen Alpha Wert von 0. Beim Ausfahren werden die Alpha Werte per Tween auf 100 hochgeschraubt. ( prototypes von : Laco )
Das Problem:
Das Menu selber liegt auf einem transparenten Hintergrund. Sobald ein Menupunkt mindestens 5 Untermenupunkte hat und der Hintergrund (menu_bg) eine Transparenz von <100 hat, kommt es zu "merkwürdigen" Darstellungsfehlern...(siehe fla)
Sobald entweder nur 4 Untermenupunkte verwendet werden oder der Hintergrund des Menus eine Transparenz =100 hat, kommt es NICHT zu diesen Darstellungsfehlern...?
Bin vollkommen Ratlos. Gibt es in Flash sowas wie nen Transparenz Bug?
Hier der Code: fla im Anhang PHP-Code: #include "lmc_tween.as"
//++++++++++++
// Aussehen **
//++++++++++++
var menuDepth:Number = 100;
var startX:Number = 0;
var startY:Number = 0;
var w:Number = 130;
var h:Number = 16;
var abstand:Number = 2;
var colorHead:Number = 0x1973ED;
var alphaHead:Number = 0;
var colorSub:Number = 0x1973ED;
var alphaSub:Number = 0;
var menuInTween:String = "easeOutQuad";
var menuOutTween:String = "easeOutQuad";
var InTweenTime:Number = 1;
var OutTweenTime:Number = 1;
//+++++++++++++++
// TextFormat ***
//+++++++++++++++
var sub_tf:TextFormat = new TextFormat();
sub_tf.font = "standard_07_53";
sub_tf.size = 8;
var head_tf:TextFormat = new TextFormat();
head_tf.font = "standard_09_55";
head_tf.size = 8;
//
var einrueckHead:Number = 5;
var einrueckSub:Number = 10;
//+++++++++++
// Inhalt ***
//+++++++++++
var menu_arr:Array = new Array();
menu_arr[0] = new Array("Thema 0", "Sub 01", "Sub 02");
menu_arr[1] = new Array("Thema 1", "Sub 11", "Sub 12", "Sub 13", "Sub 14", "Sub 15", "Sub 16");
menu_arr[2] = new Array("Thema 2", "Sub 21", "Sub 22", "Sub 23", "Sub 24", "Sub 25");
menu_arr[3] = new Array("Thema 3", "Sub 31", "Sub 32", "Sub 33", "Sub 34");
menu_arr[4] = new Array("Thema 4", "Sub 41", "Sub 42", "Sub 43");
var label_arr:Array = new Array();
label_arr[0] = new Array("XYZ.de", "News", "News Archiv");
label_arr[1] = new Array("Projekte", "Unterliederbach", "Heisenrath", "KarlKirchner Siedlung", "Jaspertstrasse", "Kalbach", "Neu Isenburg");
label_arr[2] = new Array("Profil", "Philosophie", "Team", "Zukunft", "Geschichte", "SUB BLA BLA");
label_arr[3] = new Array("Partner", "Kinderbüro", "Stadt Frankfurt", "Grünflächenamt", "Lieferanten");
label_arr[4] = new Array("Kontakt", "Impressum", "Disclaimer", "Lageplan");
//+++++++++++++++
// Logik ********
//+++++++++++++++
var idOffen:Number;
var offen:Boolean = false;
//+++++++++++++++
// Funktionen ***
//+++++++++++++++
function init():Void {
for (i = 0; i < menu_arr.length; i++) {
createHead(i);
}
}
function createHead(i:Number):Void {
mc = this.createEmptyMovieClip(menu_arr[i][0], menuDepth);
menuDepth--;
mc._x = startX;
mc._y = startY + (i * h) + (i * abstand);
mc.y = mc._y;
mc.i = i;
mc.k = 0;
mc.useHandCursor = false;
draw(mc);
setText(mc);
mouseEvent(mc);
//trace(mc._name + " " + mc.getDepth() + " " + mc._y);
for (k = 1; menu_arr[i][k] != undefined; k++) {
createSub(i, k);
}
}
function createSub(i:Number, k:Number):Void {
mc = this.createEmptyMovieClip(menu_arr[i][k], menuDepth);
menuDepth--;
mc._x = startX;
mc._y = startY + (i * h) + (i * abstand);
mc.y = mc._y;
mc.i = i;
mc.k = k;
mc._alpha = 0;
mc.useHandCursor = false;
draw(mc);
setText(mc);
mouseEvent(mc);
//trace(mc._name + " " + mc.getDepth() + " " + mc._y);
}
function mouseEvent(mc:MovieClip):Void {
mc.onPress = function() {
if (offen) {
//Wenn schon offen und angeklickte id = idoffen
if (idOffen == this.i) {
//dann offenen Mp moveIn
moveIn(this.i);
offen = !offen;
} else {
//Wenn ein anderer Mp offen ist, moveIn den offenen und moveOut den angeklickten
moveIn(idOffen);
moveOut(this.i);
}
} else {
//wenn noch nix offen dann öffne angeklicktes Menu
moveOut(this.i);
offen = !offen;
}
idOffen = this.i;
};
mc.onRollOver = function() {
//this.k != 0 ? this.alphaTo(100, OutTweenTime, menuOutTween, OutTweenTime) : 0;
};
mc.onRollOut = function() {
//this.k != 0 ? this.alphaTo(0, OutTweenTime, menuOutTween) : 0;
};
}
function moveOut(mp:Number):Void {
//Sub moveOut
for (smp = 1; smp < menu_arr[mp].length; smp++) {
this["Sub " + mp + smp].tween("_y", this["Sub " + mp + smp].y + smp * h, OutTweenTime, menuOutTween);
this["Sub " + mp + smp].alphaTo(100, OutTweenTime, menuOutTween);
}
//andere Head und Sub moveOut
for (next_mp = (mp + 1); next_mp < menu_arr.length; next_mp++) {
this["Thema " + next_mp].tween("_y", this["Thema " + next_mp].y + ((menu_arr[mp].length - 1) * h), OutTweenTime, menuOutTween);
for (next_smp = 1; next_smp < menu_arr[next_mp].length; next_smp++) {
this["Sub " + next_mp + next_smp].tween("_y", this["Sub " + next_mp + next_smp].y + ((menu_arr[mp].length - 1) * h), OutTweenTime, menuOutTween);
}
}
}
function moveIn(mp:Number):Void {
//Klick auf Thema: Sub moveIn
for (smp = 1; smp < menu_arr[mp].length; smp++) {
this["Sub " + mp + smp].tween("_y", this["Sub " + mp + smp].y, InTweenTime, menuInTween);
this["Sub " + mp + smp].alphaTo(0, OutTweenTime, menuOutTween);
}
//andere Head und Sub moveIn
for (next_mp = (mp + 1); next_mp < menu_arr.length; next_mp++) {
this["Thema " + next_mp].tween("_y", this["Thema " + next_mp].y, InTweenTime, menuInTween);
for (next_smp = 1; next_smp < menu_arr[next_mp].length; next_smp++) {
this["Sub " + next_mp + next_smp].tween("_y", this["Sub " + next_mp + next_smp].y, InTweenTime, menuInTween);
}
}
}
function draw(mc:MovieClip):Void {
mc.createEmptyMovieClip("bgHead", 0);
if (w != 0 && h != 0 && mc.k == 0) {
//Lösche alte Zeichnungen
mc.bgHead._alpha = alphaHead;
mc.bgHead.clear();
// Stift positionieren
mc.bgHead.moveTo(0, 0);
// Zeichnen und Füllen
mc.bgHead.beginFill(colorHead, 100);
mc.bgHead.lineTo(w, 0);
mc.bgHead.lineTo(w, h);
mc.bgHead.lineTo(0, h);
mc.bgHead.lineTo(0, 0);
mc.bgHead.endFill();
} else {
mc.createEmptyMovieClip("bgSub", 0);
//Lösche alte Zeichnungen
mc.bgSub._alpha = alphaSub;
mc.bgSub.clear();
// Stift positionieren
mc.bgSub.moveTo(0, 0);
// Zeichnen und Füllen
mc.bgSub.beginFill(colorSub, 100);
mc.bgSub.lineTo(w, 0);
mc.bgSub.lineTo(w, h);
mc.bgSub.lineTo(0, h);
mc.bgSub.lineTo(0, 0);
mc.bgSub.endFill();
}
}
function setText(mc:MovieClip):Void {
mc.k == 0 ? mc.createTextField("txt", 1, einrueckHead, 0, 0, 0) : mc.createTextField("txt", 1, einrueckSub, 0, 0, 0);
mc.k == 0 ? mc.txt.textColor = 0xEEEEEE : mc.txt.textColor = 0xFFFFFF;
//ggf auf true setzen, schrift muss in bib verknüpft werden und im textformat angegeb werden
mc.txt.type = "static";
mc.txt.embedFonts = true;
mc.txt.autoSize = true;
mc.txt.text = label_arr[mc.i][mc.k];
mc.txt.selectable = false;
mc.k == 0 ? mc.txt.setTextFormat(head_tf) : mc.txt.setTextFormat(sub_tf);
}
//+++++++++++++++
// Starten ******
//+++++++++++++++
init();
Bin dankbar für jede Hilfe, wem das Menu gefällt, kann sich gerne bedienen!
Gruss Mr.D
|