Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-09-2005, 10:40   #1 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Funktion soll Fenster zurückliefern

Warum gibt meine Funktion mir nicht ein Fenster zurück.
Es kommt ständig folgende Fehlermeldung:

**Error** Symbol=product, layer=action, frame=1:Line 150: There is no method with the name 'mcCard'.
win.mcCard.showCard();

Total ActionScript Errors: 1 Reported Errors: 1



ActionScript:
  1. function createWindow():Window {
  2.     _level0.mcMain.createClassObject(mx.containers.Window, "win", _level0.mcMain.getNextHighestDepth(), {_width:650, _height:410, title:"Warenkorb", closeButton:true});
  3.     _level0.mcMain.win._x = (Stage.width-_level0.mcMain.win.width)/2;
  4.     _level0.mcMain.win._y = (Stage.height-_level0.mcMain.win.height)/2;
  5.     _level0.mcMain.win.contentPath = "empty";
  6.     windowListener = new Object();
  7.     windowListener.click = function(evt:Object) {
  8.         removeMovieClip(evt.target);
  9.     };
  10.     _level0.mcMain.win.addEventListener("click", windowListener);
  11.     return _level0.mcMain.win;
  12. }
  13.  
  14. this.mcCard.onRelease = function() {
  15.     if (!_level0.mcMain.winCard) {
  16.         this.onEnterFrame = function() {
  17.             delete this.onEnterFrame;
  18.             getCardItems();
  19.             win = createWindow();
  20.             win.attachMovie("card", "mcCard", win.getNextHighestDepth());
  21.             win.mcCard.showCard();
  22.         };
  23.     }
  24. };

Geändert von compuboy1010 (09-09-2005 um 10:44 Uhr)
compuboy1010 ist offline   Mit Zitat antworten
Alt 09-09-2005, 10:54   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Setz mal zwischen den attachMovie und dem Funktionsaufruf einen erzwungenen Framewechsel mit einem onEnterFrame-Event, den du sofort wieder löschst. Das könnte ein zeitkritisches Problem sein...
  Mit Zitat antworten
Alt 09-09-2005, 11:20   #3 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Könntest du dir mal den Rückgabewert anschauen?
Ich weiß nicht was ich zurückgeben muss. Und was muss dann der Rückgabewert für einen Typ haben Window oder MovieClip?

ActionScript:
  1. return _level0.mcMain.win;
oder
ActionScript:
  1. return _level0.mcMain.win.content;
oder gar
ActionScript:
  1. return _level0.mcMain.win.content.empty;


ActionScript:
  1. function createWindow():Window {
  2.     _level0.mcMain.createClassObject(mx.containers.Window, "win", _level0.mcMain.getNextHighestDepth(), {_width:650, _height:410, title:"Warenkorb", closeButton:true});
  3.     _level0.mcMain.win._x = (Stage.width-_level0.mcMain.win.width)/2;
  4.     _level0.mcMain.win._y = (Stage.height-_level0.mcMain.win.height)/2;
  5.     _level0.mcMain.win.contentPath = "empty";
  6.     windowListener = new Object();
  7.     windowListener.click = function(evt:Object) {
  8.         removeMovieClip(evt.target);
  9.     };
  10.     _level0.mcMain.win.addEventListener("click", windowListener);
  11.     return _level0.mcMain.win.content.empty;
  12. }
  13.  
  14. this.mcCard.onRelease = function() {
  15.     if (!_level0.mcMain.win) {
  16.         win = createWindow();
  17.         win.attachMovie("card", "mcCard", 400);
  18.         this.onEnterFrame = function() {
  19.             delele this.onEnterFrame;
  20.             win.mcCard.getCardItems();
  21.             win.mcCard.showCard();
  22.         };
  23.     }
  24. };

So wie oben bleibt das Fenster leer.

Geändert von compuboy1010 (09-09-2005 um 11:50 Uhr)
compuboy1010 ist offline   Mit Zitat antworten
Alt 09-09-2005, 12:18   #4 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Ich komme einfach nicht weiter. Wr kann mir bitte sagen, wie es funzt?
ActionScript:
  1. var win:Window;
  2. function createWindow():Window {
  3.     _level0.mcMain.createClassObject(mx.containers.Window, "win", _level0.mcMain.getNextHighestDepth(), {_width:650, _height:410, title:"Warenkorb", closeButton:true});
  4.     _level0.mcMain.win._x = (Stage.width-_level0.mcMain.win.width)/2;
  5.     _level0.mcMain.win._y = (Stage.height-_level0.mcMain.win.height)/2;
  6.     _level0.mcMain.win.content = "emptyContainer";
  7.     windowListener = new Object();
  8.     windowListener.click = function(evt:Object) {
  9.         removeMovieClip(evt.target);
  10.     };
  11.     _level0.mcMain.win.addEventListener("click", windowListener);
  12.     return _level0.mcMain.win;
  13. }
  14.  
  15. this.mcCard.onRelease = function() {
  16.     if (!_level0.mcMain.win) {
  17.         win = createWindow();
  18.         win.content.emptyContainer.attachMovie("card", "mcCardTable", 400);
  19.         _level0.tTest.text = targetPath(mcCardTable);
  20.         this.onEnterFrame = function() {
  21.             delete this.onEnterFrame;
  22.             win.content.emptyContainer.mcCardTable.getCardItems();
  23.             win.content.emptyContainer.mcCardTable.showCard();
  24.         };
  25.     }
  26. };
compuboy1010 ist offline   Mit Zitat antworten
Alt 09-09-2005, 16:05   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Könntest du dir mal den Rückgabewert anschauen?
Warum ich? Gib einen trace-Befehl ein und schau es dir im Testmodus selbst an...
  Mit Zitat antworten
Alt 12-09-2005, 09:40   #6 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Warum gibt mir der typeof() hier als Typ movieclip zurück. Obwohl der Rückgabewert Window ist und window eigentlich
das erstellte Fenster sein soll.
Wie passiert hier etwas merkwürdiges. Nach dem ersten Klick auf das Warenkorb Symbol wird das Fenster erzeugt,
aber es erscheint bei 0,0. Nachdem ich es schließe und nochmals auf das Warenkorb Symbol klicke wird es zentriert.
Allerdings ist es immer noch leer.

ActionScript:
  1. var win:Window;
  2. function createWindow(mcParent:MovieClip, width:Number, height:Number):Window {
  3.     mcParent.createClassObject(mx.containers.Window, "win", mcParent.getNextHighestDepth(), {_width:width, _height:height, title:"Warenkorb", closeButton:true});
  4.     mcParent.win._x = (Stage.width  - win.width)/2;
  5.     mcParent.win._y = (Stage.height - win.height)/2;
  6.     mcParent.win.contentPath = "emptyContainer";
  7.     mcParent.win.content = "emptyContainer";
  8.     windowListener = new Object();
  9.     windowListener.click = function(evt:Object) {
  10.         removeMovieClip(evt.target);
  11.     };
  12.     mcParent.win.addEventListener("click", windowListener);
  13.     return mcParent.win;
  14. }
  15. this.mcCard.onRelease = function() {
  16.     if (!_level0.mcMain.win) {
  17.         win = createWindow(_level0.mcMain, 650, 410);
  18.         win.content.emptyContainer.attachMovie("card", "mcCardTable", 400);
  19.         //_level0.tTest.text = targetPath(win);
  20.         _level0.tTest.text = typeof(win);
  21.         this.onEnterFrame = function() {
  22.             delete this.onEnterFrame;
  23.             win.content.emptyContainer.mcCardTable.getCardItems();
  24.             win.content.emptyContainer.mcCardTable.showCard();
  25.         };
  26.     }
  27. };

Geändert von compuboy1010 (12-09-2005 um 09:43 Uhr)
compuboy1010 ist offline   Mit Zitat antworten
Alt 12-09-2005, 10:00   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Warum gibt mir der typeof() hier als Typ movieclip
Komponenten sind MCs...
  Mit Zitat antworten
Alt 12-09-2005, 10:05   #8 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Danke.

Hilft mir aber auch nicht direkt weiter. Habe nun so ziemlich alle Kombinationen durch und kann nur noch hoffen, dass es da keinen Macromedia Bug gibt.

Weißt zu zufällig, ob ich das content hinter dem win brauche. Habe gegoogelt und gegoogelt und finde dazu keine Beispiele.

habe als erste Zeile in getCardItems() stehen:

ActionScript:
  1. _level0.tTest.text = "bin drin";

Leider gibt der mir das nicht aus. Das heißt der ruft die Funktion nich auf. Findet er die nicht? Wie finde ich das raus?

Geändert von compuboy1010 (12-09-2005 um 10:07 Uhr)
compuboy1010 ist offline   Mit Zitat antworten
Alt 12-09-2005, 10:35   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Nach dem ersten Klick auf das Warenkorb Symbol wird das Fenster erzeugt,
aber es erscheint bei 0,0.
mcParent.win._x = (Stage.width - win.width)/2;
Du benötigst doch aber mcParent.win.width, oder? Setz doch mal ein paar traces, vor allem um zu checken, ob die Komponente erstellt wird und wo sie positioniert wird etc. Dann würde ich den onEnterFrame-Event in der Funktion eher ansetzen und zwar zwischen dem createWindow und dem attachMovie. Zumindest scheint das eine zeitkritische Sache zu sein.

Und merke: der Bug sitzt immer vor dem Gerät...
  Mit Zitat antworten
Alt 12-09-2005, 11:25   #10 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Zitat:
Zitat von agedoubleju
Und merke: der Bug sitzt immer vor dem Gerät...
Ach ja? Dann lies dir doch mal bitte das hier(Kommentare) durch. Es ist ein Bug!
compuboy1010 ist offline   Mit Zitat antworten
Alt 12-09-2005, 11:53   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Es ist ein Bug!
Woher willst du das ohne traces, Debuggen, Variablen- und Objektlisten oder Schrittsimulator wissen? Flash ist intern halt manchmal sehr langsam und man muss gelegentlich mit erzwungenen Framewechseln über onEnterFrame-Events auf die Ausführung mancher Befehle warten...
  Mit Zitat antworten
Alt 13-09-2005, 13:22   #12 (permalink)
... loves Japan!
 
Benutzerbild von compuboy1010
 
Registriert seit: Apr 2005
Ort: D'dorf; DE
Beiträge: 715
Das Problem ist gelöst.
compuboy1010 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 13:48 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele