Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-06-2004, 17:39   #1 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
Question dieses blöde Menu

Hi Jungs & Mädels,

ich bin schon seit Tagen (wenn nicht sogar Wochen) am verzweifeln!


Ich habe hier ein XML Menu, dass mir die XML Daten in meine fla liest...das klappt auch alles wunderbar!!!
Die Links und die einzelnen Navititel werden eingelesen!
Nur mir fehlt jetzt der Gedankensprung, wie ich die URL mit dem "Labelnamen" der Navi verknüpfe...ich habs bereits mit getURL versucht, aber das hat auch nicht funktioniert...

Ich hoffe das hört sich nicht alles zu verworren an...hier der bisher funktionierende Code:
ActionScript:
  1. menuClass.prototype = new MovieClip();
  2. function menuClass(){
  3.         this = _root.attachMovie("menu","menu",0);
  4.         this._data = new XML();
  5.         this._data.ignoreWhite = true;
  6.         this._data.load("menu.xml");
  7.         this._data.onLoad = menuLesen;   
  8.         this.init();
  9. }
  10. // Verknüpft die Klasse menuclass mit Menu aus d. Biblo
  11. Object.registerClass("menu",menuClass);
  12.  
  13. menuLesen = function(){
  14.     nbChilds = this.firstChild.childNodes.length;
  15.     for(var i in this.firstChild.childNodes){
  16.         temp = new itemClass();
  17.         temp.init(i);
  18.         itemMc = temp.mc;
  19.         itemMc._y = 40*i;
  20.         itemMc.park = 20*i;
  21.         itemMc.label = this.firstChild.childNodes[i].attributes.label;
  22.        
  23.         for(var j=0;j<this.firstChild.childNodes[i].childNodes.length;j++){
  24.             itemMc.attachMovie("sub","sub"+j,100*j);
  25.             sMc = itemMC["sub"+j];
  26.             sMc._y = 20 + 20*j;
  27.             sMc.toto = this.firstChild.childNodes[i].childNodes[j].attributes.label;
  28.             sMc.link = this.firstChild.childNodes[i].childNodes[j].attributes.data;
  29.             }
  30.         itemMc.distance = j*20;
  31.     }
  32.     var temp = new itemClass();
  33.     temp.init(this.firstChild.childNodes.length);
  34.     var itemMc = temp.mc;
  35.     itemMc._y = 20*this.firstChild.childNodes.length;
  36.     itemMc.park = 20*this.firstChild.childNodes.length;
  37.     this._parent._visible = true;
  38. }
  39. myMenu = new menuClass();

So und ab jetzt wirds abenteuerlich, ich hab bereits versucht, das ganze mit hitTest() (auskommentiert) abzuändern, damit die events für die Subpunkte unabhängig von den Hauptmenüpunkten sind:
ActionScript:
  1. //this._lockroot = true;
  2.  
  3. itemClass.prototype = new MovieClip();
  4. Object.registerClass("item",itemClass);
  5.  
  6. function itemClass(){
  7.     this.open = false;
  8.     itemOpen = undefined;
  9.     }
  10.  
  11. itemClass.prototype.init = function(i){
  12.     this.mc = _root.menu.attachMovie("item","item"+i,10*i);
  13. }
  14.  
  15. itemClass.prototype.onEnterFrame = function(){
  16.    
  17.     if(this.quel() <= itemToOpen){
  18.         this.seek = this.park;
  19.     }else if(this.quel() > itemToOpen){
  20.         this.seek = this.park + distance;
  21.     }
  22.     this.goEase(this.seek,5);
  23. }
  24. /*
  25. itemClass.prototype.onRollOver = function () {
  26.     s = this.hitTest(_xmouse, _ymouse, true);
  27.     //if(_root.item.hitTest(_xmouse, _ymouse, true);
  28.     trace(s);
  29. }
  30. */
  31. itemClass.prototype.onRollOver = function(){
  32.     /*
  33.     s = this.hitTest(_xmouse, _ymouse, true);
  34.     trace(this._name);
  35.     */
  36.     if(this.open = false){
  37.         itemToOpen = undefined;
  38.         itemToClose = this.quel()
  39.     }else{
  40.         itemToOpen = this.quel();
  41.         itemToClose = undefined;
  42.     }
  43.     distance = this.distance ;
  44. }
  45.  
  46. itemClass.prototype.onRollOut = function(){
  47.     itemToOpen = Infinity;
  48. }
  49. //hier ist meine Idee mit getURL ...:-(
  50. itemClass.prototype.onRelease = function() {
  51.     getURL(this.sMC.link,_blank);
  52. }
  53.  
  54. itemClass.prototype.quel = function(){
  55.     return Number(this._name.slice(4));
  56. }
  57.  
  58. itemClass.prototype.goEase = function(target,speed){
  59.     this._y = this._y + (target - this._y)/speed;
  60.     if(Math.abs(this._y-target) < 0.8)this._y = target;
  61. }
So...*schwitz*...das wars nun...
ich hoffe ihr könnt mir ein paar Gedankenansätze geben oder evt. einen Fehler entdecken, der mir IRGENDWIE weiterhilft...

Hoffentlich habt ihr ein(ige) Tip(s)...Sonst dreh ich durch...
so long


Rob
rob-master ist offline   Mit Zitat antworten
Alt 02-06-2004, 22:36   #2 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
das hier geht schon mal in die hose:

ActionScript:
  1. if(this.open = false){

war zwar nicht direkt gefragt..


Nur mir fehlt jetzt der Gedankensprung, wie ich die URL mit dem "Labelnamen" der Navi verknüpfe...ich habs bereits mit getURL versucht, aber das hat auch nicht funktioniert...




wo vergibst du denn den labelnamen und wie sieht der aus ?
warrantmaster ist offline   Mit Zitat antworten
Alt 03-06-2004, 08:03   #3 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
servus warrant...

den Labelnamen ziehe ich mir aus der XML Datei...menu.xml...! Das klappt auch soweit! Nur die Zuweisung der URL auf die einzelnen Sublabelpunkte....is halt das Problem!

So richtig fit bin ich nicht wirklich in AS....deshalb....wenn du noch einen Fehler entdeckst...immer her damit!

so long
rob-master ist offline   Mit Zitat antworten
Alt 03-06-2004, 09:45   #4 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
XML Daten

So hier ist nochmal der XML File....das Einlesen funzt ja auch soweit...


ActionScript:
  1. - <menu>
  2. - <menuItem label="Privé">
  3.   <sub label="Fichiers" data="files.swf" />
  4.   <sub label="Connexion" data="login.swf" />
  5.   </menuItem>
  6. - <menuItem label="Flash">
  7.   <sub label="Tutoriel" data="files.swf" />
  8.   <sub label="Movie" data="login.swf" />
  9.   <sub label="Portfolio" data="" />
  10.   </menuItem>
  11. - <menuItem label="Art">
  12.   <sub label="Photos" data="photos.swf" />
  13.   <sub label="Artistes" data="" />
  14.   </menuItem>
  15. - <menuItem label="Contact">
  16.   <sub label="Mail" data="" />
  17.   </menuItem>
  18.   </menu>

Dann hoffe ich auf eure Hilfe...so long...
rob-master ist offline   Mit Zitat antworten
Alt 03-06-2004, 12:30   #5 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
im xml attribut "data" übergibst du also
einen pfad in die var "link" des "sMc" ?

was ergibt

ActionScript:
  1. itemClass.prototype.onRelease = function()
  2. {
  3.        trace(this.sMC.link)
  4. }

?
warrantmaster ist offline   Mit Zitat antworten
Alt 03-06-2004, 13:13   #6 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
ich meine...ohne das zu prüfen..."undefinied" raus kommt...gelle?
rob-master ist offline   Mit Zitat antworten
Alt 07-06-2004, 20:55   #7 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
hi rob, hatte keine rechte zeit....

also:
du fragst die sache zu früh ab, da gibt es das noch nicht (flash benötigt schon auch ein wenig zeit, um alles zu laden etc.)

PHP-Code:
_root.onEnterFrame=function()
{                                   
_root.menu.item0.sub0.link != undefined ? (trace(_root.menu.item0.sub0.link),delete this.onEnterFrame): trace("noch nicht da"); // wieso zeigt er mir hier nicht den Link?

gib das mal anstelle des trace ein, dann kannst du es schön sehen.

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 08-06-2004, 08:25   #8 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
Na haste ein schönes Wochenende gehabt?

hhmmm....hört sich ja interessant an dein Vorschlag!
Ich werd das mal ausprobieren, wenn ich wieder von der Arbeit zurück bin!

Wenn du Zeit findest, würd mich das riesig freuen, wenn du nochmal einen Optimierungsblick auf den Code werfen könntest.
Denn so richtig Rund läuft das meiner Meinung noch nicht; Die Events für die items und subpunkte scheinen mir noch nicht richtig definiert zu sein?!?!!

Vielen Dank schon mal im voraus und meld dich!!

VG
Rob
rob-master ist offline   Mit Zitat antworten
Alt 08-06-2004, 09:00   #9 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
mir ist keine fehlfunktion aufgefallen...
und zum thema optimierung : wenns funzt....!?
warrantmaster ist offline   Mit Zitat antworten
Alt 08-06-2004, 11:13   #10 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
na okay Warrant....dann probier isch das ma aus...

Hoffentlich klappt das...und ich hab den richtigen Link beim Subpoint..

Ma schaun...ich meld mich dann, ok?

Vielen Dank erstma bis hierhin für deine Hilfe!
rob-master ist offline   Mit Zitat antworten
Alt 08-06-2004, 20:27   #11 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
Hey warrantmasta,

dein Vorschlag funktioniert schon, aber bringt mich nicht an mein Ziel! Ich will ja die für die Subpunkte definierten Links(die ich ja in dem XML File festgelegt habe) auch beim OnRelease wirklich in Aktion haben, d.h. wenn ich auf den Subpunkt "Fichiers" klicke, er mir dann wirklich die Seite files.swf öffnet! Dat klappt ja nich...

Das kannste mal überprüfen indem du folgende OnRelease Methode einbaust:
PHP-Code:
itemClass.prototype.onRelease = function() {
    
trace(this._name// er traced mit hier jw. item0, oder item1, nicht aber sub1 etc.

Folglich....ist der WURM in dem Menu drin...

Wat kann ich da machen????? HILFE!!!! Helft mir....

Vielen Dank für jegliche Ratschläge....
rob-master ist offline   Mit Zitat antworten
Alt 08-06-2004, 22:03   #12 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
du hast ein generelles problem.
die events deiner "item0" etc. überlagern die
der jeweiligen subs.
strick das teil so um, daß du die subs unabhängig
von den items erstellst, d.h. in einem dummy oder
halt auch auf root.
warrantmaster ist offline   Mit Zitat antworten
Alt 08-06-2004, 22:33   #13 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
ja genau....so isses...
Aber wie würdest du am Besten da vorgehen??
Der Wurm müsste ja schon in der Auflösung des XML Baums liegen (speziell: itemMc.attachMovie("sub","sub"+j,100*j)):
PHP-Code:
for(var j=0;j<this.firstChild.childNodes[i].childNodes.length;j++){
itemMc.attachMovie("sub","sub"+j,100*j);
sMc itemMC["sub"+j];
sMc._y 20 20*j;
sMc.toto this.firstChild.childNodes[i].childNodes[j].attributes.label;
sMc.link this.firstChild.childNodes[i].childNodes[j].attributes.data;

Vielleicht ist es sinniger das ganze in eine Sub_init Methode zu packen. Ähnlich wie es bei den Items umgesetzt wurde ...also dann so evt.:
PHP-Code:
itemClass.prototype.initsub = function(i){
this.mc _root.menu.attachMovie("sub","sub"+i,10*i);

Was meinst du? Bin ich da aufm richtigen Dampfer? Vielleicht...irgendwie einen hitTest() noch auf den items einbauen und dann müsste die Methode initsub ausgeführt werden?!?
Ich weiss, dass is mit mir eine Eselsgeburt... ...aber irgendwie muss man resp. ich das Problem doch lösen können ...
rob-master ist offline   Mit Zitat antworten
Alt 08-06-2004, 23:00   #14 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
PHP-Code:
for(var j=0;j<this.firstChild.childNodes[i].childNodes.length;j++){
var 
sMc=_root.attachMovie("sub","sub"+j,100*j);
sMc._y 20 20*j;
sMc.toto this.firstChild.childNodes[i].childNodes[j].attributes.label;
sMc.link this.firstChild.childNodes[i].childNodes[j].attributes.data;

ist natürlich nicht ganz ohne arbeit,
da du ja deine ganzen funktionen
und tiefen/positionen ummodeln mußt.

vielleicht gehst du komplett neu ran,
ist mitunter schneller gemacht, als
drin rummodeln. kannst ja die
grundfunktionen nutzen.


warrantmaster ist offline   Mit Zitat antworten
Alt 09-06-2004, 09:45   #15 (permalink)
Flashuser
 
Benutzerbild von rob-master
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 182
na okay...dann werd ich mal mit dem ummodeln nach der Arbeit beginnen...

auf Problemchen werde ich sicherlich noch stossen und wäre dir wirklich super dankbar, wenn du mir etwas Schützenhilfe dazu geben könntest !?Ich werd mal meine Arbeit, dann hier posten, okay?? Dann kannst du dir meine Ummodelei anschauen...
rob-master 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 02:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele