2009-07-02 19 views
8

Estoy intentando configurar scaleMode en mi aplicación AIR. que se establece a través de stage.scaleMode. Sin embargo, cuando intento hacer referencia a la etapa, vuelve a ser nulo. ¿No se por que?AIR: ¿Por qué stage == null?

Aquí es la aplicación completa:

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 
      import flash.display.StageDisplayState; 
      private function init():void 
      { 
       var s:Stage = this.stage; //<<-- this.stage == null...why?? 
       s.scaleMode = StageScaleMode.EXACT_FIT; 
      } 
     ]]> 
    </mx:Script> 
</mx:WindowedApplication> 

Respuesta

1

Trate de añadir un detector de eventos para Event.ADDED_TO_STAGE, o el atributo addedToStage mxml. Deberías poder referenciar el escenario entonces.

0

Para estar seguro, tanto en aplicaciones web y el aire, por lo general utiliza el evento applicationComplete para marcar la finalización del ciclo de puesta en marcha, antes de ir en busca del objeto stage. A partir de los documentos:

Una vez creados todos los componentes y dibujado, el objeto Application distribuye un evento applicationComplete. Este es el último evento enviado durante una aplicación de inicio.

Si espera por applicationComplete, puede estar seguro de que todo está listo para usted.

1

Infierno,

usted podría intentar con

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication 
     xmlns:mx="http://www.adobe.com/2006/mxml" 
     creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 
      import flash.display.StageDisplayState; 
      private function init():void 
      { 
       this.systemManager.stage.scaleMode = StageScaleMode.EXACT_FIT; 
      } 
     ]]> 
    </mx:Script> 
</mx:WindowedApplication> 

Que debe hacer el truco :)

Cuestiones relacionadas