Avatar billede albatros Nybegynder
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?
Avatar billede maqhem Nybegynder
23. juli 2007 - 18:56 #1
Du kunne jo lade begge klasser nedarve metoden? Eller bare gøre den public, så den også kan tilgås udefra.
Avatar billede albatros Nybegynder
23. juli 2007 - 19:16 #2
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.
Avatar billede albatros Nybegynder
23. juli 2007 - 19:27 #3
Hov .. Der skal lige nævnes at det er ActionScript 3
Avatar billede maqhem Nybegynder
23. juli 2007 - 19:34 #4
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.
Avatar billede maqhem Nybegynder
23. juli 2007 - 19:34 #5
Metoden progressHandler i loadBg.as kan vidst godt gøres private alligevel.
Avatar billede albatros Nybegynder
23. juli 2007 - 21:48 #6
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?
Avatar billede maqhem Nybegynder
23. juli 2007 - 21:53 #7
var thisIsCore:core = new core();
trace(core.percentLoaded);
Avatar billede maqhem Nybegynder
23. juli 2007 - 21:53 #8
Hov sådan hér:

var thisIsCore:core = new core();
trace(thisIsCore.percentLoaded);
Avatar billede albatros Nybegynder
23. juli 2007 - 22:04 #9
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.
Avatar billede mat Nybegynder
23. juli 2007 - 22:28 #10
Se evt denne tråd http://www.eksperten.dk/spm/736225 (de sidste indlæg)

Det er AS2 men ideen er den samme.

mvh mat
Avatar billede maqhem Nybegynder
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);
Avatar billede mat Nybegynder
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.
Avatar billede maqhem Nybegynder
23. juli 2007 - 23:15 #13
Men så svarer det vel også bare til at gøre metoden public, som jeg foreslog i starten?
Avatar billede mat Nybegynder
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".
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester