Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-06-2004, 18:48   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
onRelease() temporär deaktivieren?

Hallo zusammen.

Ich habe eine Webprojekt, bei dem es eine stark verschachtelte Navigation gibt. Sämtliche Navigationsobjekte werden nach einer MySQL Db Query aus der Bibliothek instanziert und bekommen ihre onRelease() Funktion entsprechend dynamisch zugewiesen.
Klappt alles wunderbar.

Ich habe nun das Projekt auf Fehler getestet und bin auf ein kompliziertes Problem gestoßen, das ich mir nicht erklären kann.

Angenommen, ich wähle aus einer Liste von 5 Submeüeinträgen einen aus, dann instanziert sich nach DB Abfrage rechts daneben eine lange Liste mit SubSubmenüs, welche onRelease() daneben den Inhalt in ein Scrollpane laden.
Wenn ich nun wie wild zwischen diesen 5 Submenüeinträgen hin und her klicke, werden eine Menge Queries an die DB abgefeuert… am Ende habe ich dann im Contentfenster ein Mischmasch der Inhalte aus verschiedenen Menüpunkten, die sogar noch im Nachhinein sich ändern, jenachdem wann die letzten Queryergebnisse eintrudeln.

Nun… wer klickt wie wild umher… berücksichtige ich das einfach mal nicht, dachte ich mir.

Als der Kunde dann aber das Projekt mit Analogmodem getestet hat, hat e aufgrund der teilweise etwas längeren Wartezeit einfach mal weitegeklickt. Und weiter und weiter… das Ergebniss war dann ähnlich wie mein Amokclicking.

Gibt es nun eine Möglichkeit, das ich die anderen onRelease() der Menüpunkte temporär deaktiviere und sobald die Query abgeschlossen ist in die LoadVars onLoad Funktion bei Erfolg diese wieder aktiviere?

Oder etwas anderes? Zur Not die Maus irgendwo oben rechts im Bild festhalten


Hier mein Script

PHP-Code:
//actionscript… wie macht man AS Highlighting nun? Ist ja neu alles hier…
var firstGroup=new itemOwnerGroup();
    
_root.elements.createEmptyMovieClip('level2',1);
    var 
sender=new LoadVars()
    
sender.object=this;
    
sender.root_id=_global.key_id-level_id;    
    
sender.sendAndLoad('query.php'sender'POST');
    
sender.onLoad=function(success)
        {
        if (
success)
            {
            var 
base_y=-65;
            var 
base_x=-470;        
            for (var 
i=0i<this.repeatsi++)
                {            
                var 
CompClip=itemOwnerClass.createSymbol(_root.elements.level2'level2_'+iifirstGroup);                
                
CompClip.id=eval('this.id_'+i);
                
CompClip.name=eval('this.name_'+i);
                
CompClip.field_name.text=eval('this.name_'+i);
                
CompClip._x=base_x;
                
CompClip._y=base_y+(i*20);
                
MacOs_instance.stopDrag();
                
MacOs_instance.removeMovieClip();
                
Mouse.show();
                
CompClip.onRelease=function()
                    {
                    
attachMovie("MacOs""MacOs_instance",1)
                    
MacOs_instance.startDrag(true);
                    
Mouse.hide();
                    
this.group.switchSelection(this);
                    
_root.varChar(this.namethis.date);
                    var 
secondGroup=new itemOwnerGroup();
                    
_root.elements.createEmptyMovieClip('level3',2);                    
                    var 
sender2nd=new LoadVars()
                    
sender2nd.object=this;
                    
sender2nd.root_id=this.id;    
                    
sender2nd.sendAndLoad('query.php'sender2nd'POST');
                    
sender2nd.onLoad=function(success)
                        {
                        if (
success)
                            {
                            for(var 
j=0j<this.repeatsj++)
                                {                        
                                var 
CompClip2=itemOwnerClass.createSymbol(_root.elements.level3'level3_'+jjsecondGroup);
                                
CompClip2.id=eval('this.id_'+j);
                                
CompClip2.date=eval('this.date_'+j);
                                
CompClip2.name=eval('this.name_'+j);
                                
CompClip2.field_name.text=eval('this.name_'+j);
                                
CompClip2._x=base_x+133;
                                
CompClip2._y=base_y+(j*20);
                                
MacOs_instance.stopDrag();
                                
MacOs_instance.removeMovieClip();
                                
Mouse.show();
                                
CompClip2.onRelease=function()
                                    {
                                    
attachMovie("MacOs""MacOs_instance",1)
                                    
MacOs_instance.startDrag(true);
                                    
Mouse.hide();
                                    
this.group.switchSelection(this);
                                    
_root.varChar(this.namethis.date);
                                    var 
thirdGroup=new itemOwnerGroup();
                                    
_root.elements.createEmptyMovieClip('level4',3);
                                    var 
sender3rd=new LoadVars()
                                    
sender3rd.object=this;
                                    
sender3rd.root_id=this.id;
                                    
sender3rd.sendAndLoad('query.php'sender3rd'POST');
                                    
sender3rd.onLoad=function(success)
                                        {
                                        if (
success)
                                            {
                                            var 
level4_x=-200;
                                            var 
level4_y=297;
                                            for(var 
k=0;k<this.repeats;k++)
                                                {
                                                var 
CompClip3=itemOwnerClass.createSymbol(_root.elements.level4'level4_'+kkthirdGroup);
                                                
CompClip3.id=eval('this.id_'+k);
                                                
CompClip3.root_id=eval('this.root_id_'+k);
                                                
CompClip3.date=eval('this.date_'+k);
                                                
CompClip3.name=eval('this.name_'+k);
                                                if(
k<9)
                                                    {
                                                    
CompClip3.field_name.text='0'+[k+1];
                                                    }
                                                else
                                                    {
                                                    
CompClip3.field_name.text=k+1;
                                                    }
                                                
CompClip3.image=eval('this.image_'+k);
                                                
CompClip3.txt=eval('this.text_'+k);
                                                
CompClip3._x=level4_x+(18*k);
                                                
CompClip3._y=level4_y;
                                                
MacOs_instance.stopDrag();
                                                
MacOs_instance.removeMovieClip();
                                                
Mouse.show();
                                                
CompClip3.onRelease=function()
                                                    {
                                                    
attachMovie("MacOs""MacOs_instance",1)
                                                    
MacOs_instance.startDrag(true);
                                                    
Mouse.hide();
                                                    
this.group.switchSelection(this);
                                                    
_root.varChar(this.namethis.date);
                                                    
_root.elements.createEmptyMovieClip('level5',4);
                                                    var 
ContComp=_root.elements.level5.attachMovie('content''content'1);                                                
                                                    
ContComp.name_field.text=this.name;
                                                    if(
contenttype=='textonly')
                                                        {
                                                        
ContComp.txt_only_field.text=this.txt;
                                                        
ContComp.txt_only_field.autoSize=true;
                                                        }
                                                    else
                                                        {                                                                                                               
                                                        
ContComp.txt_field.text=this.txt;
                                                        
ContComp.txt_field.autoSize=true;
                                                        
ContComp.image.loadMovie(this.image);                                                    
                                                        }
                                                    
_root.elements.content.createEmptyMovieClip('ScrollFrame',1);
                                                    var 
Scrollpane=_root.elements.content.ScrollFrame.attachMovie('FScrollPaneSymbol','ScrollPane',1);
                                                    
Scrollpane.setSize(425374);
                                                    
Scrollpane._x=-44;
                                                    
Scrollpane._y=-206;
                                                    
Scrollpane.setScrollContent(ContComp);
                                                    
Scrollpane.setVScroll=true;
                                                    
Scrollpane.setHScroll=false;
                                                    
ContComp._x=-190;
                                                    
MacOs_instance.stopDrag();
                                                    
MacOs_instance.removeMovieClip();
                                                    
Mouse.show();
                                                    }                                            
                                                }
                                            
_root.elements.level4.level4_0.onRelease();
                                            
delete this.object['sender3rd'];
                                            }
                                        }                                
                                    }
                                }
                            
delete this.object['sender2nd'];
                            }                        
                        }
                    }
                
delete this.object['sender'];                
                }    
            }
        }
    } 

Liebe Grüße

Yves

Geändert von 409coffeemaker (07-06-2004 um 18:50 Uhr)
  Mit Zitat antworten
Alt 07-06-2004, 19:36   #2 (permalink)
this.onEnterFame
 
Benutzerbild von RedSaint
 
Registriert seit: Feb 2002
Ort: Jetzte: Stuttgart
Beiträge: 1.666
hi 4089 coffemaker,

also deinen code hab ich mir jetzt echt nicht zu gemüte geführt, aber bei deinem problem spielt das ja evtl. auch garkeine sooo große rolle...


frag doch einfach beim klicken ab, ob der user "klicken darf" ... :
deine buttons sind mc´s :

PHP-Code:
on(release){
if(
_root.klickbar){
//deine daten laden etc.
_root.klickbar=false;
klickcheck(); 
}

dann machst du dir nen prototype zum checken ob deine daten nu da sind oder nicht:

PHP-Code:
MovieClip.prototype.klickcheck=function(){
this.onEnterFrame=function(){
if(
deinedatengeladen){
_root.klickbar=true;
delete this.onEnterFrame,
}


-> so zumindest mal der weg .. gibt bestimmt noch ne menge anderer möglichkeiten zu checken ob deine daten geladen wurde und ob der user nun wieder klicken darf ...

-> aso: und für den nervös klickenden kunden wäre ja mal zu empfehlen in das textfenster sowas zu schreiben wie "... daten werden geladen"
dann hat er wenigstens nen response auf seinen klick!!!
also:

PHP-Code:
on(release){
if(
_root.klickbar){
_root.contentmc.contenttextfeld.textfeldvariable="Daten werden geladen..."
//deine daten laden etc.
_root.klickbar=false;
klickcheck();


hoffe das hilft


grüße


_RED_
__________________
_may the force be with you_
.................................................. .........
on Fire 2008
.................................................. .........

Easy Crime available here
.................................................. .........

_RED_ + Flashforum = Big Love
.................................................. .........

A.K.A: ACHIM 0815

Geändert von RedSaint (07-06-2004 um 19:38 Uhr)
RedSaint ist offline   Mit Zitat antworten
Alt 07-06-2004, 21:14   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

der nervös klickende Kunde sollte normalerweise Ruhe geben, da sich ja schon der Mauszeiger während der Preloadphase in die MacOS „Sanduhr“ verwandelt und symbolisiert, das Daten geladen werden.


Dein Idee finde ich gar nicht schlecht.

Prinzipiell könnte ich doch deinem Konzept entsprechend eine Variable, zb: _global.query_status setzen, und diese dann onRelease der Clips auf 'active' und dann jeweils onload beim loadVars auf 'inactive' setzen. Dann mach ich eine Abfrage in die onRelease() Funktion, die das ganze dann nur auslöst, wenn _global.query_status=='inactive' und spare mir somit den onEnterFrame Handler, oder?


Besten Dank schon mal… Yves
  Mit Zitat antworten
Alt 08-06-2004, 08:52   #4 (permalink)
this.onEnterFame
 
Benutzerbild von RedSaint
 
Registriert seit: Feb 2002
Ort: Jetzte: Stuttgart
Beiträge: 1.666
jap ... das sollte auch gehn ... ich hab halt keine ahnung wie "genau" das onLoad vars ist ... mit nem oef würde halt z.b. 31mal pro sekunde abgefragt ob die daten nu da sind oder nicht ...

aber ansich hast du recht und das prinzip ist klar ...

sach doch noma bescheid wenn´s geklappt hat ...




gruß

_RED_
__________________
_may the force be with you_
.................................................. .........
on Fire 2008
.................................................. .........

Easy Crime available here
.................................................. .........

_RED_ + Flashforum = Big Love
.................................................. .........

A.K.A: ACHIM 0815

Geändert von RedSaint (08-06-2004 um 08:54 Uhr)
RedSaint ist offline   Mit Zitat antworten
Alt 08-06-2004, 09:11   #5 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

mit „onload des LoadVars“ meine ich die Onload Methode des LoadVars Objektes.
Machst du nichts mit dbases und php in Flash?


PHP-Code:
    var sender=new LoadVars() 
****
sender.object=this
****
sender.root_id=_global.key_id-level_id;**** 
****
sender.sendAndLoad('query.php'sender'POST'); 
****
sender.onLoad=//Zuweisen zb einer Funktion. Wird ausgeführt nachdem die Daten an query.php gesendet wurden und neue Daten ebenfalls komplett geladen sind. 
Liebe Grüße

Yves
  Mit Zitat antworten
Alt 08-06-2004, 09:18   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2001
Ort: D
Beiträge: 381
Zitat:
Prinzipiell könnte ich doch deinem Konzept entsprechend eine Variable, zb: _global.query_status setzen, und diese dann onRelease der Clips auf 'active' und dann jeweils onload beim loadVars auf 'inactive' setzen. Dann mach ich eine Abfrage in die onRelease() Funktion, die das ganze dann nur auslöst, wenn _global.query_status=='inactive' und spare mir somit den onEnterFrame Handler, oder?
so mache ich das auch meistens, wenn in gewissen Phasen keine
Interaktionen des Users stattfinden dürfen
momo-loom ist offline   Mit Zitat antworten
Alt 08-06-2004, 09:20   #7 (permalink)
this.onEnterFame
 
Benutzerbild von RedSaint
 
Registriert seit: Feb 2002
Ort: Jetzte: Stuttgart
Beiträge: 1.666
nope .. nichts mit db und allem was damit zutun hat ... bin eigentlich kein programmierer - mehr gestalter mit AS interesse ... wenns an datenbanken geht wird das outgesourced ...
__________________
_may the force be with you_
.................................................. .........
on Fire 2008
.................................................. .........

Easy Crime available here
.................................................. .........

_RED_ + Flashforum = Big Love
.................................................. .........

A.K.A: ACHIM 0815
RedSaint ist offline   Mit Zitat antworten
Alt 08-06-2004, 09:24   #8 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von momo-loom
so mache ich das auch meistens, wenn in gewissen Phasen keine
Interaktionen des Users stattfinden dürfen
Eigentlich müsste man für wildklickende Kunden aufs System zugreifen können während Daten laden, damit die keinen sh1ce machen…

Bildschirm dunkel, CD Rom auf und zu, fieser Sinuston auf den Boxen, Maus unter Strom…


Dann werd ich das mal in mein obiges Script einbauen…


Ich sag bescheid wenns geklappt hat.

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 08-06-2004, 13:36   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2001
Ort: D
Beiträge: 381
Zitat:
Bildschirm dunkel, CD Rom auf und zu, fieser Sinuston auf den Boxen, Maus unter Strom…
nett Idee,
die windows user sollten das doch vom normalen arbeiten her
gewöhnt sein

viel Erfolg
momo-loom ist offline   Mit Zitat antworten
Alt 08-06-2004, 13:39   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von momo-loom
windows user sollten das doch vom normalen arbeiten her
gewöhnt sein
Ich sehe, wir verstehen uns
  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 23:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele