17. oktober 2004 - 11:39Der er
25 kommentarer og 1 løsning
bedste hittest metode
jeg bruger lige nu: if(_root.hitAera.hitTest(listeners[u])) { trace("vi ramte squ"); }
hvor jeg tjekker om et stort mc hitAera bliver ramt af nogle små (listeners[u])
Problemet er at det virker som om det ikke er helt nøjagtigt, - hvordan kan det være, - er det måske noget med registreringspunktet i nogle af mc'erne?
kan du sige mig hvordan jeg får onLoadProgress metoden til at arbejde sammen med imgholder?
Jeg vil også gerne have det sådan, at hvis der allerede er loaded noget ind i mit imgholder clip så skal der ikke loades igen men returneres :) Der er jo ingen grund til at loade det samme 2 gange.
Kan jeg på en eller anden måde knytte de enkelte mclProgress til en samlet progress, altså i stedet for at den som nu har tjek på hvert enkelt lille clip så giver et samlet indtryk af hvor meget der er loadet. Jeg kan jo godt få totalbytes for hvert clip og så lægge dem sammen, også måske hele tiden måle på progress af hvert clip og give besked til en samlet progress bar som jeg laver, - men jeg ville bare gerne kunne knytte 1 progressbar komponent til alle små 'loads' på samme tid, - hvis det altså kan lade sig gøre ;)
Igen, du kan gøre lige hvad du har lyst til. Vil du have en funktion på din managerklasse, der returnerer progress for alle clips, der er ved at loade lige nu, så lav den. Vil du teste om imgholder findes inden du loader noget ind i den, så test det. Der er ikke noget hemmeligt eller mærkeligt i ActionScript - du kan sagtens skrive lige det, du har lyst til :)
Men jeg har nu et problem, - jeg kan ikke rigtig se hvordan jeg kan få progressbar komponentet til at reagere på input fra flere billeder der loader på en gang.
Er jeg virkelig nød til at lave en gammeldags progress bar eller kan jeg få progress bar komponentet til at opføre sig som en samlet progress bar?
Jeg er nød til at loade 1 billede ad gangen, - min ide er så at lave et nyt array af de clips der 'består' hittesten og så loade disse clip en efter en.
Men jeg kan squ ette få mit nye array til at pushe...
her er koden:
class LoadImagesManager { static var listeners:Array;
static var holdListeners:Array;
static function addListener (li:ZoomIt) {
if (listeners == undefined) listeners = new Array ();
listeners.push (li);
}
static function activate (myVal:String) { trace("myVal = "+myVal); if (myVal == "true")
Nej, det ligger statisk på klassen - du havde glemt at initialisere det, det rigtige sted. Du skal ikke skrive "var" foran klasse-variabler - så laver du jo bare lokale variabler i stedet for :)
Derudover, _root-referencer er alt andet end OOP. Don't! Lav en setHitArea-metode og kald den et eller andet sted efter din constructor i flash - det andet er sgu for hackset på den skumle måde ;)
Du kan godt initialisere din statiske variabel helt oppe ved dens definition. Det er fint nok. Men du kan lige så godt initialisere den nede i den funktion, som du jo alligevel skal gøre hver gang for at få den "tømt" for det gamle indhold.
Når du i funktionen activate() skriver:
var holdListeners = new Array();
Så laver du en lokal variabel, der hedder holdListeners og sætte den til et nyt array. Men det vil du jo ikke, så hvorfor gøre det. Du vil gerne sætte den statiske variabel holdListeners - og ikke en lokal. Så slet "var" og det virker. "var" laver lokale variabel. Så simpelt er det :)
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.