Avatar billede nielsen2002 Nybegynder
17. juli 2007 - 12:10 Der er 6 kommentarer

onPress funktion på dynamisk genererede billeder

Hej Eksperten,

Jeg har lavet mig en Object Collection som indeholder en række Produkter, jeg har fået produktbillederne smidt ind i mit movieclip, men jeg kan ikke få en onRelease funktion på hver enkelt billede til at fungere.

Når mit loop ser således ud

var varianter:DwEcomVariants = objProduct.AvaibleFronts;
for(var i = 0; i < varianter.Count; i++) {
        var Variant:DwEcomVariant = varianter.Item(i);
           
        var picHref = Variant.VariantImage;
    var cPic = "containerPic"+i;
    var cName = "containerPic"+i;           
    myDepth2 = this.getNextHighestDepth();
    var cPic:MovieClip = this.createEmptyMovieClip(cName, myDepth2);
    var label:TextField = cPic.createTextField("label", 1, 0, 0, 29, 12);
    loadMovie(picHref,cPic);
           
    cPic.onRelease = SwapImage(picHref);           

    cPic._x = cPic._x + 32*i;
    cPic._y = 0;
       
}

Håber i kan hjælpe mig, eller måske henvise til at tut.

Mvh
Martin
Avatar billede maqhem Nybegynder
17. juli 2007 - 15:34 #1
cPic.onRelease = SwapImage(picHref);

Denne måde at skrive det på tager ingen parametre. Du kan løse det på en lidt klam måde sådan:

cPic.onRelease = function() {SwapImage(picHref);};

Eller du kan benytte klassen Proxy (ascb.util.Proxy), som er en del af ActionScript 3.0, men også fås i en ActionScript 2.0-venlig version (http://www.person13.com/downloads/ascb_util_Proxy.zip):

cPic.onRelease = ascb.util.Proxy.create(this, SwapImage, picHref);
Avatar billede maqhem Nybegynder
17. juli 2007 - 15:34 #2
De to sidste tegn er ikke en del af linket: http://www.person13.com/downloads/ascb_util_Proxy.zip
Avatar billede nielsen2002 Nybegynder
17. juli 2007 - 15:52 #3
okay, det hjalp, nu har jeg virker min onrelease funktion. jeg brugte denne løsning
cPic.onRelease = function() {SwapImage(picHref);};

Så jeg har nu koden:

var varianter:DwEcomVariants = objProduct.AvaibleFronts;
for(var i = 0; i < varianter.Count; i++) {
        var Variant:DwEcomVariant = varianter.Item(i);           
    var picHref = Variant.VariantImage;           
           
    // Opret movie clip
    var Container:MovieClip = this.createEmptyMovieClip("Container"+i,this.getNextHighestDepth());
    Container.onRelease = function() {_root.SwapImage(image._url);};

    Container._x = Container._x + 32*i;
    Container._y = 0;
               
    // Opret billede i det før oprette movieclip
    var image:MovieClip = Container.createEmptyMovieClip("FRONT"+i, Container.getNextHighestDepth());
    image.loadMovie(picHref);       
}               

min SwapImage funktion lave lige nu ikke andet end at trace funktionens parametre.

men jeg er nu stødt på et nyt problem.

Lige meget hvilken af de generede billeder jeg klikke på, vises altid den sidste URL i min collection...
Avatar billede maqhem Nybegynder
17. juli 2007 - 16:09 #4
Du har ikke overvejet, at image._url altid er konstant, vel?
Avatar billede nielsen2002 Nybegynder
18. juli 2007 - 08:45 #5
Det jeg forventer image._url er lig med er variablen "picHref" altså den værdi jeg smider i image.loadMovie(X);.

Det mit loop skal gøre er følgende:

For hvert produkt i min collection, skal der genereres et billede med en onRelease function på, jeg skal i functionen kunne hive det klikkede billedes url ud.

Er der andre muligheder en det jeg har gang i her?
Avatar billede maqhem Nybegynder
18. juli 2007 - 13:38 #6
Event:onRelease
Container.onRelease = SwapImage;

Function:SwapImage
function SwapImage():Void {
    trace(this.image._url);
}
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