23. juli 2007 - 18:51
Der er
14 kommentarer
Sende variabler mellem klasser
Hejsa :) Jeg har 2 klasser. En hoved klasse og en klasse der loader et baggrundsbillede ind. De hedder core.as og loadBg.as Det jeg gerne vil er at sende min procent loaded fra loadBg.as til core.as I loadBg.as har jeg en progressHandler hvor jeg har en variable der indeholder procent loaded actionscript: private function progressHandler(event:ProgressEvent):void { var percent:Number = Math.round((event.bytesLoaded / event.bytesTotal )*100 ); } Den vil jeg gerne have til at komme ud i min core.as klasse. Hvordan løser jeg det problem?
Annonceindlæg fra Kingston Technology
Du kunne jo lade begge klasser nedarve metoden? Eller bare gøre den public, så den også kan tilgås udefra.
maghem: Kan du evt. komme med et hint eller et lille eksempel? Jeg har ikke arbejdet ret meget med kommunikation mellem klasser eller klasser for den sags skyld.
Hov .. Der skal lige nævnes at det er ActionScript 3
Ja jeg kan godt se, det er ActionScript 3. Prøv med følgende: loadBg.as: ------------------ (...) public static var percent:Number = 0; (...) public function progressHandler(event:ProgressEvent):void { percent = Math.round((event.bytesLoaded / event.bytesTotal ) * 100); } (...) ------------------ core.as: ------------------ (...) public function get percentLoaded():Number { return loadBg.percent; } (...) ------------------ Tilgå den i core.as med metoden percentLoaded(), som du benytter som egenskab ved percentLoaded. Nu er jeg ikke vildt hardcore til AS 3 endnu, men jeg tror nok, det er rigtigt.
Metoden progressHandler i loadBg.as kan vidst godt gøres private alligevel.
Kan simpelthen ikke få det til at virke :\ Hvordan får jeg en funktion ud af percentLoaded så jeg kan trace en variable der refere til percent?
var thisIsCore:core = new core(); trace(core.percentLoaded);
Hov sådan hér: var thisIsCore:core = new core(); trace(thisIsCore.percentLoaded);
Kan godt være det er mig der er helt galt på den, men får stadig en fejl. public function getLoadedPercent(){ var thisIsCore:core = new core(); trace(thisIsCore.percentLoaded); } Køre der efter getLoadedPercent() i min constructor.
23. juli 2007 - 22:42
#11
(...) public function get percentLoaded():Number { return loadBg.percent; } (...) Dette er i klassen. Følgende er i RODEN af filmen: var thisIsCore:core = new core(); trace(thisIsCore.percentLoaded);
23. juli 2007 - 22:55
#12
Det er bare ikke den generelle løsning på den skitserede problemstilling at udveksle kommunikation mellem objekter gennem statics.
23. juli 2007 - 23:15
#13
Men så svarer det vel også bare til at gøre metoden public, som jeg foreslog i starten?
24. juli 2007 - 07:25
#14
Nej, metoden kan stadig være privat, den kalder en anden metode i "core", gennem en reference til denne. Eller i tilfældet med noget eventdispatching halløj, abonnerer "core" på en event smidt af "loadBg".
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.