Avatar billede kalleballe Nybegynder
11. oktober 2004 - 15:42 Der er 13 kommentarer og
1 løsning

Stoppe et mc der er ved at load en ekstern jpg

Hej, - jeg giver et mc besked på at loade et eksternt jpg, - og det er da også fint nok, - men hvad hvis jeg har lyst til at afbryde loadningen inden billedet er loadet, - kan jeg det?

Jeg bruger my_mcl.loadClip("mitBillede.jpg");

Og så lige en anden ting, - jeg bruger et mc som holder til en masse mindre mc's der loader billeder, - kan jeg bruge en totalBytes på mit 'over' mc, - altså på mc'et det holder de små mc's?

Jeg kunne nemlig godt tænke mig at få et samlet overblik over hvor meget der er loadet og hvor meget der mangler uden at skulle gå ind og finde totalBytes på hvert lille bitte klip.

Og allerbedst vil det naturligvis være hvis jeg kan få progress baren til at reagere på denne totalBytes ting ;)




vh

KalleBalle
Avatar billede barklund Nybegynder
11. oktober 2004 - 15:53 #1
Ja og nej.

Mht. stop af load, så kan du unloade target for dit load. Altså fjerne det movieclip, som du er ved at loade ind i. Det er er jeg ret overbevist om, vil få playeren til at stoppe load.

Mht. bytes, så er du nødt til at gå det enkelte moviecliploader igennem for at spørge om dens bytes. Men hvis du stadig har din forrige klasse-struktur, så kan du jo bare få det enkelte movieclip til at fortælle manager-klassen, hvad dets load er - så kan den samle sammen :)

--
Morten Barklund
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 11:11 #2
Hej igen, problemet er at jeg ikke bare kan fjerne det mc som jeg er ved at load i, - jeg skal nemlig måske bruge det igen, - derfor tænkte jeg om jeg ikke bare kunne give clippet besked på at loade et eller andet dummy billede, - a la en 1x1 jpg, - bare for at den dog har noget at bestille.

Jeg bruger samme klasse struktur, - klassen ser sådan ud nu:

class LoadImagesManager
{
    static var listeners: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")
           
            {
           
            _root.container_mc.lowQuality.midQuality._visible = true;
           
                for (var i = 0; i<listeners.length; i++)
                {
                   
                    listeners[i].checkZoom ();
                       
                }
               
            }else{
                       
                _root.container_mc.lowQuality.midQuality._visible = false;
                   
            }
       
   
    }
   
}

som du kan se er det booleanen myVal der bestemmer om listeners[i].checkZoom (); bliver kørt eller ej.

Men hvordan skal jeg fortælle manager-klassen hvad et listener[i] load er når der endnu ikke er loadet noget, - listener[i] er jo bare en holder??

Jeg har så en anden klasse:

import LoadImagesManager.as;
class ZoomIt extends MovieClip {
   
   
   
   
    static var loadAllBytes:Number
   
   
   
    static var my_mcl:MovieClipLoader
   
   
    function ZoomIt()
    {
       
        my_mcl = new MovieClipLoader();
       
        my_mcl.addListener(_parent);
       
        LoadImagesManager.addListener(this);
       

    }

   
    private function checkZoom():Void
    {
   
            if (_root.maske_mc.hitTest(_parent))
            {
               
                my_mcl.loadClip("kalleballe.jpg", _parent);
           
           
           
            }
           
           
    }
       
   
   
    function onLoadInit(target_mc:MovieClip):Void
    {
       
        var getItAll:Object = my_mcl.getProgress(target_mc);
        /*
        samlet bytes += getItAll
*/
       
       
    }
   
   
   
    function onLoadProgress(target_mc:MovieClip):Void
    {
       
       
        var mclProgress:Object = _parent.getProgress(target_mc);
        trace(mclProgress.bytesLoaded+" of "+mclProgress.bytesTotal+" bytes loaded");
       
       
    }
   
    function onLoadComplete(target_mc:MovieClip):Void
    {
       
        trace("complete");
       
    }
   
   
   
}


vh

KalleBalle
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 14:41 #3
Det er er vist bedre:

class LoadImagesManager
{
    static var listeners: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")
           
            {
           
            _root.container_mc.lowQuality.midQuality._visible = true;
           
                for (var i = 0; i<listeners.length; i++)
                {
                    if(_root.maske_mc.hitTest(listeners[i]))
                    {
                           
                           
                            trace("listeners[i] = "+listeners[i]);
                            listeners[i].checkZoom ();
                           
                    }
                       
                }
               
            }else{
                       
                _root.container_mc.lowQuality.midQuality._visible = false;
                   
            }
       
   
    }
   
}
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 14:41 #4
hittesten tjekker om clippet rent faktisk er inde på scenen, - hvis det er det så skal det loades.
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 15:20 #5
men det virker ikke helt præcist, - den springer nogle clips over selv om hittesten burde give "true", - så jeg er nok nød til at regne mig frem til om et clip er inden for det område man kan se (altså masken).
Avatar billede barklund Nybegynder
12. oktober 2004 - 21:32 #6
Dine clips flytter sig vel ikke spontant uden for scenen? Når det flytter sig rundt, så kan du vel bare sætte et flag inden i hvert enkelt movieclip, der indikerer om det er "live" eller ej.

Derudover kan du lave en load og en stopload funktion på hvert clip som:

    function checkZoom():Void
    {
            if (_root.maske_mc.hitTest(_parent))
            {
                my_mcl.loadClip("kalleballe.jpg", this.createEmptyMovieClip("imgholder, 1));
            }
    }
    function stopLoad():Void
    {
            this.imgholder.removeMovieClip();
    }

Så loader du altså i en imgholder, som du bare kan fjerne igen. Du havde en masse rod i din version.

Men for at vi ikke bare blander flere og flere ting ind i det hele i bedste frugtsalat stil, kan du så ikke lige remse op, hvad du har brug for *præcist* af funktionalitet af disse klasser?

--
Morten Barklund
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 21:56 #7
Hej du og tak for dit svar.

Det jeg prøver at lave er noget lignende http://www.fsi-viewer.com/

Jeg har en klasse der danner en grid af små billeder oven på et stort billede.
Så har jeg en klasse der laver zoom, - dvs. den forstørrer det ydre clip som holder de små clips.

Så er der en klasse der tjekker hvad størrelse mine små clips er blevet skaleret op til ved hjælp af det ydre mc og som så loader de små clips.

Så er der jo klassen der tjekker om mine små clips er inde for det område man kan se.



vh

KalleBalle



P.S. ja, - jeg har allerede små imgholdere så jeg kan let bruge stopLoad funktionen :)
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 22:54 #8
Det der af en eller anden grund er mit problem lige nu er følgende:

Det går helt fint med at zoom fra 100 til 200 procent.

Når jeg så zoomer videre til 400 procent så løber den fint min listener array igennem og finder også de clips der rammer masken, - men så går den ikke videre til checkZoom (); og det skal den jo ;)
Avatar billede kalleballe Nybegynder
12. oktober 2004 - 23:34 #9
underligt, - ved at bruge my_mcl.loadClip("kalleballe.jpg", this.createEmptyMovieClip("imgholder, 1)); så kan den godt komme ned i checkZoom igen :)
Avatar billede kalleballe Nybegynder
13. oktober 2004 - 00:23 #10
så nu virker det squ næsten :)

Smid et svar, så er der point.


vh

KalleBalle
Avatar billede barklund Nybegynder
13. oktober 2004 - 01:09 #11
Som nævnt havde du flere fejl i dit script. For eksempel kan du da godt loade noget ind i et movieclips parent movieclip - men dermed sletter du jo det gamle indhold, deriblandt movieclippet selv.

Men jeg kan slet ikke gennemskue, hvordan zoom laves via loading af billeder. Er det ikke smartere at bruge _xscale/_yscale? Well, det er nok mig, der ikke helt forstår.
Avatar billede kalleballe Nybegynder
13. oktober 2004 - 09:55 #12
zoom fungere ved at jeg skærer et meget stort og skarpt billede ud i små clips som jeg så loader, - derved bliver det skarpt uden at fylde for meget.
Avatar billede kalleballe Nybegynder
13. oktober 2004 - 14:31 #13
Jeg kan ikke helt få min progress ting til at virke med "imgholder", - kan du sige mig hvordan jeg knytter 'loadings' methoderne til dette object i stedet for 'this' ??
Avatar billede kalleballe Nybegynder
19. december 2006 - 14:31 #14
luk
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