Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 17-12-2008, 10:14   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: da
Beiträge: 143
Probleme mit stage.stageWidth bzw stage. allgemein

Hallo und guten Tag,

so, ich bin nun an meinem ersten AS3 Projekt dran, AS2 hab ich schon länger gemacht. Nun bin ich aber einem Problem dran, wo ich absolut keine Lösung seh. Einerseits möcht ich einen Key event listener machen. also irgendwas stage.addEventListener. (<-weiss ich grundsätzlich wie, ist nicht die frage an sich)

nur sagt mir flash immer, er wüsste nicht was stage ist. ich habs mal vereinfacht und möchte mir einfach stage.stageWidth austracen lassen. voila mein code:

PHP-Code:
package
{
    
import flash.display.*
    
import flash.display.Stage
    import flash
.events.*
    
import flash.text.*
    
import gs.*;    


    
    
    public class 
Main extends Sprite
    
{
        var 
menuElemente:Array = new Array;
        var 
zeilenHoehe 90;
        
        
        
        public function 
Main()
        {
            var 
titleText:String "yehayehayeha";
            
trace("initialized the main class")
            for(var 
0<= 9i++){
                
            
menuElemente[i] = new Baureihe(titleText)
            }
        
            for(var 
0<= 9j++){    
            
addChild(menuElemente[j]);
            var 
posY:Number * (zeilenHoehe 4);
            
menuElemente[j].posY;
            }    
        }
//HIER UM DAS HIER GEHTS!!!
        
trace(stage.stageWidth);
        

    }


und die fehlermeldung in flash:
1120: Zugriff auf eine nicht definierte Eigenschaft stage.


hoffentlich weiss jemand eine lösung.


danke
n
__________________
www.winterlife.com
nbuechi ist offline   Mit Zitat antworten
Alt 17-12-2008, 10:47   #2 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Wenn die Klassen als Document Class registriert ist dann müsstest du auf die stage Eigenschaft immer ohne Probleme zugreifen können, allerdings steht dein trace() ja nicht in einer Methode sondern mitten in der Klassendefinition (Absicht?).

Wenn die Klasse nicht deine Docuemnt Class ist dann kannst du mit

this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage)

darauf reagieren wenn dein Objekt zur DisplayList hinzugefügt wird. Ab diesem Zeitpunkt (und nicht vorher, außer eben die DocumentClass) ist die stage erst != null, also verfügbar.

lg
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 17-12-2008, 11:00   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Ich meine, dass auch die DocumentClass ein EVENT.ADDED_TO_STAGE feuert.
Omega Psi ist offline   Mit Zitat antworten
Alt 17-12-2008, 11:29   #4 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Natürlich jedes DisplayObject kann das, sorry hab ich wohl etwas unglücklich formuliert . Was ich damit sagen wollte ist dass es für die DocumentClass nicht unbedingt notwendig ist (wobei ich es persönlich immer über den Listener mache).
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 17-12-2008, 13:36   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Und noch eine unglückliche Formulierung:
ActionScript:
  1. package
  2. {
  3.  
  4.     import flash.display.Sprite;
  5.     import flash.events.Event;
  6.  
  7.     public class DocumentClass extends flash.display.Sprite
  8.     {
  9.  
  10.         public function DocumentClass()
  11.         {
  12.             super();
  13.             initialize();
  14.         }
  15.  
  16.         private function eventListener(event:Event):void
  17.         {
  18.             trace("DocumentClass.eventlistener", event.type);
  19.         }
  20.  
  21.         protected function initialize():void
  22.         {
  23.             this.addEventListener(Event.ADDED, eventListener, false, 0, true);
  24.             this.addEventListener(Event.ADDED_TO_STAGE, eventListener, false, 0, true);
  25.         }
  26.     }
  27. }
Die Events werden immer dispatched. Das bedeutet man sollte immer Event-getrieben programmieren.
Omega Psi ist offline   Mit Zitat antworten
Alt 17-12-2008, 14:47   #6 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
Zitat:
Zitat von Omega Psi Beitrag anzeigen
...Die Events werden immer dispatched...
[OT]Hab ja nichts gegenteiliges behauptet ^^.[/OT]
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 18-12-2008, 09:07   #7 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: da
Beiträge: 143
besten dank, jetzt funktionierts so.

aber nochmals eine verständnis frage. wenn ich es nicht im konstruktor drin habe, dann wird es nie aufgerufe? versteh ich das richtig?


und noch noch was anderes. ich habe jetzt meinen keyeventlistener geschrieben:

PHP-Code:
this.stage.addEventListener(KeyboardEvent.KEY_DOWNreportKeyDown
und ich gebe mir so aus was gedrückt wird:
PHP-Code:
        function reportKeyDown(event:KeyboardEvent):void
        
{
            
trace("Key Pressed: " event.keyCode);
        } 

nur funktionieren nun nicht alles tasten. es gehen alle zahlen, d,g,x,u und noch ein paar. woran kann das liegen?



danke!!!
danke!!!
danke!!!
__________________
www.winterlife.com
nbuechi ist offline   Mit Zitat antworten
Alt 18-12-2008, 09:19   #8 (permalink)
obvious
 
Registriert seit: Dec 2007
Ort: Berlin
Beiträge: 125
Wenn du in der Flash-IDE testest, gehen Tasten die mit der Werkzeugpalette verknüpft sind nicht.

Starte dein SWF im Browser oder mit dem Standalone FlashPlayer, dann klappts.
__________________
I´m gone to shot some aliens for kingdom and glory, for welfare and for life itself
xisari ist offline   Mit Zitat antworten
Alt 18-12-2008, 09:26   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2001
Ort: da
Beiträge: 143
achso.

na da hätt ich noch lange rumstudieren können.

tausend dank!!!
__________________
www.winterlife.com
nbuechi 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 16:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele