Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!

Jetzt kostenlos registrieren

onRelease und onRollOut-Konflikt

Fragen zum Thema Flash können hier gestellt werden

Moderatoren: Basti, Ulli H.

onRelease und onRollOut-Konflikt

Beitragvon Mr.Red am 29.11.2010, 18:58

Hallo miteinander!

Ich habe angefangen, meine eigene Homepage zu erstellen und da darf Flash natürlich nicht fehlen. Ein paar grundkentnisse habe ich auch schon. Allerdings ist mir schon beim "Menü" ein Problem aufgetreten:

Der Button ist mit einer onRollOver, onRollOut und onRelease-Funktion belegt, die sich überschneiden:
Der Tween von der onRollOut-Funktion soll, wenn der Button gedrückt wurde, nicht mehr ausgeführt werden, das "Gallery" stehen bleiben.

Natürlich habe ich schon Versucht, das ganze über Google zu lösen. Funktioniert hat nichts (Variablen, die onRollOut-Funktion löschen,...).

Vorweg: ich arbeite mit Flash8, weil ich mir nichts anderes leisten kann :)

Das ganze sieht so aus: http://www.fabio-oehme.de
Der Code:
Code: Alles auswählen
on (rollOver) {
   _root.but2_2.alphaTo(20, 1);
   _root.but2_3.alphaTo(20, 1);
   _root.but2_4.alphaTo(20, 1);
   //////////////////////////
   _root.gallery.alphaTo(100, 1);
   _root.gallery.tween("_x", 240, 1);
}
on (rollOut) {
   _root.but2_2.alphaTo(100, 1);
   _root.but2_3.alphaTo(100, 1);
   _root.but2_4.alphaTo(100, 1);
   ///////////////////////////
   _root.gallery.alphaTo(0, 1);
   _root.gallery.tween("_x", 210, 1);



Vielen Dank im Voraus! :)
Benutzeravatar
Mr.Red
Mitglied
 
Beiträge: 187
Registriert: 14.04.2009, 18:04
Diese Anzeige ist nur für
Nicht-Mitglieder sichtbar!
 
Jetzt kostenlos registrieren

Re: onRelease und onRollOut-Konflikt

Beitragvon Ulli H. am 30.11.2010, 10:49

Lass mal die normalen Schaltflächen weg und programmiere mit normalen mcs.

Ich hab dir mal ein Beispiel angehängt.

Wolltest du sowas?
Dateianhänge
dw.zip
(7.37 KiB) 11-mal heruntergeladen
Ich möchte wie mein Opa im Schlaf sterben und nicht heulend und schreiend wie sein Beifahrer.

Mentalisten sprechen Rabisch und sprengen den Geist
Fundamentalisten sprechen Arabisch und sprengen sich selbst

Von O. Kalkofe über die Urin Kellner Show
Benutzeravatar
Ulli H.
Moderator
 
Beiträge: 1054
Registriert: 11.04.2007, 21:52
Wohnort: Ludwigsburg

Re: onRelease und onRollOut-Konflikt

Beitragvon Mr.Red am 30.11.2010, 19:00

Hey, danke für die schnelle Antwort und die Datei. Und so im Grunde ist das das, was ich gefragt hatte. Der Code ist blos ein bisschen komplizierter, außerdem bin nicht gewohnt, in den Layer zu schreiben, wenn man so sagen kann. Deßhalb versteh ich ihn auch nicht ganz; das "tolle" an den Menü sollte sein, dass (wie auf dem Link zu sehen) die anderen Menüpunkte transparenter werden, wenn ich über den einen fahre. Das bekomm ich nicht hin :(
Benutzeravatar
Mr.Red
Mitglied
 
Beiträge: 187
Registriert: 14.04.2009, 18:04

Re: onRelease und onRollOut-Konflikt

Beitragvon Ulli H. am 01.12.2010, 09:20

Was eigentlich auch mit wenigen Handgriffen gemacht ist.
Nimm diesen Code in meinem Beispiel und lösche den alten Code.

Code: Alles auswählen
a1._alpha=0;
a2._alpha=0;
a3._alpha=0;
a4._alpha=0;
//Wieviele Sekunden wird gefadet
fadeintime=1;

setted=false;
main.onRelease=function(){
   if(!setted){
      setted=true;
      menu=new Array(a1,a2,a3,a4);
      menuName=new Array('Link1','Link2','Link3','Link4');
      //Menufunction beim release
      menuFunc=new Array(btn1,btn2,btn3,btn4);
      setMenu(menu,menuName,menuFunc);
      }
   }
function fadeIn(mc){
   a=new mx.transitions.Tween(mc.t,'_alpha',mx.transitions.easing.Regular.easeOut,mc.t._alpha,100,fadeintime,true);
   b=new mx.transitions.Tween(mc.t,'_x',mx.transitions.easing.Regular.easeOut,mc.t._x,50,fadeintime,true);
   }
function fadeOut(mc){
   a=new mx.transitions.Tween(mc.t,'_alpha',mx.transitions.easing.Regular.easeOut,mc.t._alpha,0,fadeintime,true);
   b=new mx.transitions.Tween(mc.t,'_x',mx.transitions.easing.Regular.easeOut,mc.t._x,0,fadeintime,true);
   }
function makeText(mc,nam){
   mc.createTextField('t',0,0,0,0,0);
   mc.t.autoSize=true;
   mc.t.selectable=false;
   mc.t.embedFonts=true;
   mc.form=new TextFormat();
   with(mc.form){font="Arial"; size=22; bold=true; color=0xFFFFFF;}
   mc.t.text=nam;
   mc.t.setTextFormat(mc.form);
   mc.t._alpha=0;
   }
function transin(array,it){
   for(i=0;i<array.length;i++){
      if(i!=it){
         a=new mx.transitions.Tween(array[i],'_alpha',mx.transitions.easing.Regular.easeOut,array[i]._alpha,50,fadeintime,true);
   
         }
      }
   }
function transout(array,it){
   for(i=0;i<array.length;i++){
      if(i!=it){
         a=new mx.transitions.Tween(array[i],'_alpha',mx.transitions.easing.Regular.easeOut,array[i]._alpha,100,fadeintime,true);
   
         }
      }
   }
function setMenu(mcs,names,funcs){
   for(i=0;i<mcs.length;i++){
      a=new mx.transitions.Tween(mcs[i],'_alpha',mx.transitions.easing.Regular.easeOut,0,100,fadeintime,true);
      makeText(mcs[i],names[i]);
      clicker=mcs[i];
      clicker.id=i;
      clicker.onRollOver=function(){
         fadeIn(this);
         transin(mcs,this.id);
         }
      clicker.onRollOut=function(){
         if(_root.selectedMc!=this){
            fadeOut(this);
            transout(mcs,this.id);
            }
         }
      clicker.onRelease=function(){
         if(_root.selectedMc!=this){
         fadeOut(_root.selectedMc);
         }
         _root.selectedMc=this;
         funcs[this.id]();
         }
         
      }
   }
   
//testfunktionen
function btn1(){
   trace("Link 1 aktiv");
   }
function btn2(){
   trace("Link 2 aktiv");
   }
function btn3(){
   trace("Link 3 aktiv");
   }
function btn4(){
   trace("Link 4 aktiv");
   }


Der Code ist eigentlich nicht komplizierter. Du musst nur etwas umdenken.
Generell bin ich der Meinung, dass man keine Schaltflächen mehr verwenden sollte. Stattdessen sollte man sich angewöhnen alles auf der HZL zu programmieren. Es ist übersichtlicher, da man ja soviele as Dateien inkluden kann wie man möchte.
So habe ich teils bei großen Projekten im ersten Schlüsselbild nur 20 oder 30 include Anweißungen und schreiben den ganzen eigentlichen Code in die entsprechend inkludierte As Datei.

Da ich allen as Dateien eindeutige Namen gebe und auch nur der Code da reinkommt der tatsächlich auch zum jeweilgen Thema gehört, ist das ganze mehr als übersichtlich und es macht Spaß so zu arbeiten.

Versuch es einfach mal :)
Ich möchte wie mein Opa im Schlaf sterben und nicht heulend und schreiend wie sein Beifahrer.

Mentalisten sprechen Rabisch und sprengen den Geist
Fundamentalisten sprechen Arabisch und sprengen sich selbst

Von O. Kalkofe über die Urin Kellner Show
Benutzeravatar
Ulli H.
Moderator
 
Beiträge: 1054
Registriert: 11.04.2007, 21:52
Wohnort: Ludwigsburg

Re: onRelease und onRollOut-Konflikt

Beitragvon Mr.Red am 06.12.2010, 13:03

Also, Ich bin jetzt endültig auch dahinter gekommen, es funktioniert auch vollständig und zudem besser!
Vielen Dank für die Hilfe :)
Benutzeravatar
Mr.Red
Mitglied
 
Beiträge: 187
Registriert: 14.04.2009, 18:04


Zurück zu Flash

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast