risolto tutto usando FlexGlobals.
dal modulo/componente:
Code:import mx.core.FlexGlobals; public function test():void { FlexGlobals.topLevelApplication.lbl_load.visible = true; }
This is a discussion on come fare riferimento ad una varibile dell'applicazione da un modulo? within the FLEX builder 3 forums, part of the Flash Italiano category; Come si può fare riferimento ad una varibile dell'applicazione da un modulo? Vorrei modificare la visibilità di una label dell'applicazione ...
Come si può fare riferimento ad una varibile dell'applicazione da un modulo?
Vorrei modificare la visibilità di una label dell'applicazione principale tramite un modulo, e per farlo ho pensato di usare una classe in as3 di questo genere:
nel codice dell'modulo/componente ci sarà:Code:package model { public class MainApplication { // MainApplication instance public static var instance:MainApplication = new MainApplication(); // MainApplication properties // NOTE: all bindable? [Bindable] private var label_visible:Boolean = true; public function MainApplication() { //trace("Init User"); if (instance) throw new Error("MainApplication can only be accessed through MainApplication.getInstance()"); //Initialize application's visuals initialize(); } public static function getInstance():MainApplication { return instance; } private function initialize():void { //NOTE: need to inizialize somethings? } /***************** * set variables * *****************/ public function set_label_visible(val:Boolean):void { label_visible = val; } /***************** * get variables * *****************/ public function get_label_visible():Boolean { return label_visible; } } }
il codice dell'app invece è:Code:// model import model.MainApplication; public function test():void { MainApplication.getInstance().set_label_visible(false); }
la label ha visible="{mainApp.get_label_visible()}"Code:// application core import mx.controls.Alert; import mx.events.FlexEvent; // components.* import components.*; // model import model.MainApplication; // variables [Bindable] protected var mainApp:MainApplication; protected function initializeHandler(event:FlexEvent):void { mainApp = MainApplication.getInstance(); com_mod_loader.test(); }
Purtroppo però quando parte la funzione test, la proprietà visible della label non cambia. Come posso fare? C'è un metodo più diretto?
risolto tutto usando FlexGlobals.
dal modulo/componente:
Code:import mx.core.FlexGlobals; public function test():void { FlexGlobals.topLevelApplication.lbl_load.visible = true; }
Bookmarks