Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-08-2004, 07:17   #1 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Talking Neu: Delegate Class - Absolut genial!!!!

Moin,

für alle, die's interessiert: mit der neuen (v7.2) DelegateClass & z.B. der Funktion scope kann man jetzt auf einfache Weise Ereignisse aus Komponenten per AS zur z.B. Navigation mit der MenuBar (jaja, meine MenuBar ) benutzten (similar to onRelease)!

Hier mal der Thread mit dem "alten" Code (mit einigen vergeblichen Versuchen, eine SWF in einen Container aus der MenuBar zu laden & dann zu skalieren) ->LINK<-




Hier der neue Code mit der scope funktion -> nun funzt's BIG SPECIAL THX 2 atothek

PHP-Code:
fscommand("fullScreen""true");
//Import delegate.class
import mx.utils.Delegate;
//------------------------------------------------
//--- Aktionen für die Button_MCs um externe Daten
//--- in den Ziel-MC "ladeziel" zu laden ---------
lade_1.onPress = function() {
    
// Ladebefehl
    
ladeziel.loadMovie("howTo.swf");
    
// Aufruf der Funktion für die Preloaderanzeige
    
ladestatus();
};
lade_2.onPress = function() {
    
ladeziel.loadMovie("film2.swf");
    
ladestatus();
};
lade_3.onPress = function() {
    
ladeziel.loadMovie("bild3.jpg");
    
ladestatus();
};
//-------------------------------------------------

//--- Ladeanzeige unsichtbar machen ---------------
loader._visible false;
//-------------------------------------------------

//--- Ladefunktion --------------------------------
ladestatus = function () {
    
// Einen onEnterFrame-Event erstellen, so dass nun
    // der Ladezustand kontinuierlich abgefragt und
    // angezeigt wird
    
loader.onEnterFrame = function() {
        
// Geladene und zu ladenede Bytetes abfragen
        
geladen _root.ladeziel.getBytesLoaded();
        
zuladen _root.ladeziel.getBytesTotal();
        
// Sicherheitsabfrage, da ein leerer MC so ungefähr
        // 4 bis 5 Bytes hat und zu Verfälschungen führen könnte
        
if (geladen>=10) {
            
// Ladeanzeige sichtbar machen
            
loader._visible true;
            
// Berechnung der bereits geladenen Prozent
            
prozent Math.round(geladen/zuladen*100);
            
// Ausgabe im dynamischen Textfeld "prozentanzeige"
            
this.prozentanzeige.text prozent+" Prozent geladen";
            
// Skalierung des Balkens anhand der Prozentzahl
            
this.balken._xscale prozent;
            
// Wenn komplett geladen
            
if (prozent>=100) {
                
// den EnterFrame-Event löschen um Performance zu sparen
                
delete this.onEnterFrame;
                
// die Ladeanzeige wieder unsichtbar machen
                
this._visible false;
            }
        }
    };
};
//-------------------------------------------------


//SetUp Farben für MenuBar
meineMenuBar.setStyle("themeColor""0xFF00FF");
meineMenuBar.setStyle("color""0xFF00FF");
meineMenuBar.setStyle("backgroundColor""white");
meineMenuBar.setStyle("popupDuration""100");
meineMenuBar.setStyle("fontFamily""GillSans");
meineMenuBar.setStyle("fontSize""12");
meineMenuBar.setStyle("borderColor""0xFF00FF");
meineMenuBar.setStyle("highlightColor""0xFF00FF");
//meineMenuBar.setStyle("_alpha", "0");
meineMenuBar.setStyle("borderStyle""none");

//SetUp Navigation & Untermenü
var menu meineMenuBar.addMenu("File");
menu.addMenuItem({label:"New"instanceName:"newInstance"});
menu.addMenuItem({type:"separator"});
menu.addMenuItem({label:"Open"instanceName:"openInstance"});
    
menu.openInstance.addMenuItem({label:"Import"instanceName:"sub"});
menu.addMenuItem({label:"Close"instanceName:"closeInstance"});

//Erstellt Listener-Objekt, daß das Ereignissobjekt evt einsetzt, um die Auswahl von Menüelementten abzufangen
//Version 1 (native)
//var listen = new Object();
//listen.change = function(evt){
//  var menu = evt.menu;
//  var item = evt.menuItem
//  if (item == menu.newInstance){
//    meinNew();    
    //setProperty(this.ladeziel, _xscale, 150);
    //setProperty(this.ladeziel, _yscale, 150);

//  }else if (item == menu.openInstance){
//    meinOpen()
//    trace(item);
//  }else if (item == menu.closeInstance){
//    meinClose()
//    trace(item);
//  }
//}
//Version 2 (delegate.class)
var listen = new Object();
listen.scope this;

listen.change = function(evt){
  var 
menu evt.menu;
  var 
item evt.menuItem
  
if (item == menu.newInstance){
    
this.scope.bugFunc();
    
// Ladebefehl
    
ladeziel.loadMovie("howTo.swf");
    
// Aufruf der Funktion für die Preloaderanzeige
    
ladestatus();
    
//setProperty(this.ladeziel, _xscale, 150);
    //setProperty(this.ladeziel, _yscale, 150);

  
}else if (item == menu.openInstance){
    
meinOpen()
    
trace(item);
  }else if (
item == menu.closeInstance){
    
meinClose()
    
trace(item);
  }
}
menu.addEventListener("change",listen);

//var f = meineMenuBar.newInstance.selectedItem();
//if(f = true){
//    meineMenuBar.newInstance.setProperty(this.ladeziel, _xscale, 150);
//    setProperty(this.ladeziel, _yscale, 150);
    //trace("Hallo");
//}

//var scaleSWF = meineMenuBar.newInstance;
//scaleSWF.onRelease.setProperty(this.ladeziel, _xscale, 150);

//if (item == menu.newInstance){
//    setProperty(this.ladeziel, _xscale, 150);
//}
bugFunc = function(){
    
trace("aufgerufen");

Ich hoffe, ich hab' das einigermaßen richtig erklärt (bin net so firm im AS)

Wenn ich bedenke, wie lange ich darüber gegrübelt habe, diieses Problem zu lösen und wieviel ich hier gepostet hab wg. meiner SCH*** MenuBar ... naja, letztendlich hat es (glaub' ich) gelohnt!

Greeztz @ all!
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 13-08-2004, 09:00   #2 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
In dem Code wird die Delegate Klasse aber nicht benutzt, oder?

mfg. r
bokel ist offline   Mit Zitat antworten
Alt 13-08-2004, 09:04   #3 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
gehört die funktion scope net zur delegate class???->wenn net, ups
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 13-08-2004, 09:12   #4 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Hehe, nicht wirklich, also ups
Der Code von oben steht übrigens fast genauso auch in der Hilfe zur MenuBar drin. Da hättest du nicht lange suchen müssen

mfg. r
bokel ist offline   Mit Zitat antworten
Alt 13-08-2004, 10:16   #5 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Unhappy ... hab mich zu früh gefreut

Ich bin empört
das mit der Menubar hab ich auch aus der Hilfe!
Aber das mit dem "scope" funzt auch net so recht ...
Hab mich zu früh gefreut

Wenn ich den 1. "Link" im Untermenu d. MenuBar anclick, wird die 1. SWF wie gewünscht in den Container geladen und sogar skaliert (hab noch weiter dran rumgebastelt).

Tja, und beim rumbasteln ist mir dann aufgefallen, das es dann beim 2. und so weiter net merh funtzt -> SCH****

Irgendjemand einen Idee
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 13-08-2004, 10:23   #6 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
@tomtom na da hast mich nicht recht verstanden
Zitat:
damit kannste doch schonmal arbeiten. ansonsten kannste das ganze auch mit delagtes lösen. im 7.2 update gibt es nun die klasse mc.utils.Delagation. hier mal ein artikel dazu. passt genau auf deinen fall.
kann vorkommen ;

schau mal so

PHP-Code:
var listen = new Object();
listen.scope this;

listen.change = function(evt){
    
  var 
menu evt.menu;
  var 
item evt.menuItem
  
  
if (item == menu.newInstance){
    
this.scope.newFunc();
  }else if (
item == menu.openInstance){
   
this.scope.openFunc();
  }else if (
item == menu.closeInstance){
   
this.scope.closeFunc();
  }
}
menu.addEventListener("change",listen);

newFunc = function(){
    
trace("new");
    
ladeziel.loadMovie("new.jpg");
}

openFunc = function(){
    
trace("open");
    
ladeziel.loadMovie("open.jpg");
}

closeFunc = function(){
    
trace("close");
    
ladeziel.loadMovie("close.jpg");

zu meiner schande muß ich sagen das es mit den delegates gar nicht hätte gehen könne da ja die MenuBar einfach nur schlecht ist . Ich dachte das man sich die einzelnen MC die ein manzItem darstellen zurückgebenlassen kann und entsprechend das changeEvent darauf anwenden kann da hab ich falsch gedacht. MM komponenten functionen sind einfach nicht ausreichend
__________________
TVNEXT Solutions

Geändert von atothek (13-08-2004 um 10:26 Uhr)
atothek ist offline   Mit Zitat antworten
Alt 13-08-2004, 10:35   #7 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Talking @atothek

jepp,

ist mir auch aufgefallen (als ich das vom bokel gelesen & auf mein AS geschaut hab).

Hätte das "this.scope" einfach auch für die anderen Menupunkte eintragen sollen, right?!

Zitat:
MM komponenten functionen sind einfach nicht ausreichend
Ich hätte mir (ehrlich gesagt) auch mehr von den Komponenten erhofft, da ich halt net so wirklich "scripten" kann! *rotwerd*

Im Endeffekt hätte ich mir die blöde MenuBar sparen und mir meine eigene bauen sollen (wär besser & {wahrschheinlich} schneller gegangen) - aber es ist halt zu spät

Daaaaaaaaanke für eure Hilfe (ich liebe das Forum )

Grüße,
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 13-08-2004, 11:05   #8 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Zitat:
Zitat von atothek
MM komponenten functionen sind einfach nicht ausreichend
Zitat:
..., da ich halt net so wirklich "scripten" kann! *rotwerd*

Im Endeffekt hätte ich mir die blöde MenuBar sparen und mir meine eigene bauen sollen (wär besser & {wahrschheinlich} schneller gegangen) - aber es ist halt zu spät
Mit Verlaub, das ist beides Quatsch. Die ständige Motzerei über die Komponenten finde ich mittlerweile echt lame. Die Komponenten erfordern sicher eine gewissen Einarbeitungszeit und auch die Doku könnte vielleicht umfangreicher sein. Aber funktionieren tun die schon.

mfg .r

Geändert von bokel (13-08-2004 um 11:07 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 13-08-2004, 11:23   #9 (permalink)
Art Director
 
Benutzerbild von tomtom69
 
Registriert seit: Sep 2002
Ort: Mülheim/Ruhr
Beiträge: 698
Talking @bokel

sagt ja auch keiner, daß die Komponenten SCH**** sind.
Im Gegenteil: da steckt bestimmt jede Menge Potenzial drin.
ABER: In der Zeit, die man braucht, um sich einzuarbeiten und man sich die Dinger anpassen kann, hat man sich Sachen wie MenuBar, Button o.Ä. selber gebaut (mich hat's bis jetzt soviel Nerven gekostet ).

Hab' mir das Buch von Sascha Woolter & Marc Thiele gekauft und dort wird einem halt suggeriert, daß man die Komponenten (fast) "idiotensicher" einsetzten kann
Zitat:
... im Idealfall benötigen Sie zur Erstellung einer Anwendung keine Zeile ActionScript ... (Seite 247)
.

Naja, jetzt funtzt Alles - vor allem Dank atothek!!! Danke noch mal - ich wär sonst noch durchgedreht
__________________
__________________________________________
"… blubb!"
tomtom69 ist offline   Mit Zitat antworten
Alt 13-08-2004, 12:32   #10 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
@ralf sicherlich ist es mittlerweile lässtig. haste vollkommen recht ich will auch gar nicht soviel auf MM schimpfen, aber
manche functionen wäre einfach sinnvoll gewesen und auch wünschenswert. Es gibt derart viele anfragen bezüglich den v2´s, und dadurch wieder 1000 workarounds. mit dem ellipsis update sind ja auch viele bugs gefixt wurden aber leider nicht ergänzt. wie zB meinMenuO.getMenuInstance(meinMenuO.openInst);
manch einer hätte sich gefreut . Und jetzt frag ich dich mal ob du das ganze auch so gemacht hättest.? Ich glaube nicht, oder? Nix für Ungut

noch nen schönen Tag
alex
__________________
TVNEXT Solutions
atothek 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 01:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele