Avatar billede fauer Nybegynder
18. januar 2007 - 12:16 Der er 30 kommentarer og
1 løsning

Gå til næste childNodes når animationen slutter

Jeg har lavet denne lille dynamiske animation, nu vil jeg gerne have at det næste image i mit XML dokument bliver valgt... at jeg går viddere til næste childNodes når animationen (transition) er slut...

Hvordan gør jeg det??

Mvh fauer


//____ loader XML _______//
var min_xml:XML = new XML();
var rootNode:XMLNode;
var mcl:MovieClipLoader = new MovieClipLoader();
var nodePos:Number;
var FileName:Array = new Array();

min_xml.ignoreWhite = true;
min_xml.onLoad = processXML;
function processXML (success:Boolean) {
    if (success) {
        rootNode = this.firstChild;
        loopThroughXML();
        } else {
        trace ("error");
        }
}
min_xml.load("products.xml");

//_____Loop gennem XML dokument____//
function loopThroughXML() {
for (var i:Number = 0; i<rootNode.childNodes.length; i++) {
    FileName[i] = rootNode.childNodes[i].attributes.FileName;
    }
    nodePos = 0;
    loadItems(nodePos);
    }
function loadItems(nodePos:Number) {
};
    my_txt.text = Description[nodePos];
   
var container:MovieClip = this.createEmptyMovieClip("con",this.getNextHighestDepth)
var mclListener:Object = new Object();

mclListener.onLoadInit = function(target_mc:MovieClip) {
    target_mc._x = 780;
    target_mc._y = -3;
};

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mclListener);
image_mcl.loadClip(FileName[nodePos], container);

// Transitions/overgange fade og zoom
import mx.transitions.Tween;
import mx.transitions.easing.*;

var image_tween1:Object = new Tween(container,  "_alpha", Regular.easeOut, 0,  100, 2, true);
var image_tween2:Object = new Tween(container,  "_yscale", Bounce.easeOut, 0,  50, 2, true);
var image_tween3:Object = new Tween(container,  "_xscale", Bounce.easeOut, 0,  50, 2, true);
};
Avatar billede mat Nybegynder
18. januar 2007 - 13:18 #1
Tween har en onMotionFinished event, der sendes når et tween er færdigt (sjovt nok). Dvs du sætter en event handler op for denne event, der henter næste billede ala;

image_tween3.onMotionFinished = function () {
nodePos++;
image_mcl.loadClip(FileName[nodePos], container);
}

mvh mat
Avatar billede fauer Nybegynder
18. januar 2007 - 15:52 #2
Nu har jeg prøvet at lave en kopi....
men kan simpelthen ikke få det til at virke...

//____ loader XML _______//
var min_xml:XML = new XML();
var rootNode:XMLNode;
var mcl:MovieClipLoader = new MovieClipLoader();
var nodePos:Number;
var Kampagne:Array = new Array();

min_xml.ignoreWhite = true;
min_xml.onLoad = processXML;
function processXML (success:Boolean) {
    if (success) {
        rootNode = this.firstChild;
        loopThroughXML();
        } else {
        trace ("error");
        }
}
min_xml.load("products.xml");

//_____Loop gennem XML dokument____//
function loopThroughXML() {
for (var i:Number = 0; i<rootNode.childNodes.length; i++) {
    Kampagne[i] = rootNode.childNodes[i].attributes.Kampagne;
    }
    nodePos = 0;
    loadItems(nodePos);
    }
function loadItems(nodePos:Number) {
    //
var containerk:MovieClip = this.createEmptyMovieClip("conk",this.getNextHighestDepth)
var mclListenerk:Object = new Object();

mclListenerk.onLoadInit = function(target_mck:MovieClip) {
    target_mck._x = 10;
    target_mck._y = 10;
};

var image_mclk:MovieClipLoader = new MovieClipLoader();
image_mclk.addListener(mclListenerk);
image_mclk.loadClip(Kampagne[nodePos], containerk);
trace(Kampagne[nodePos]);

// Transitions/overgange fade og zoom
import mx.transitions.Tween;
import mx.transitions.easing.*;

var image_tweenk:Object = new Tween(containerk, "_alpha", Regular.easeOut, 0,  100, 2, true);
};

image_tweenk.onMotionFinished = function () {
nodePos++;
image_mclk.loadClip(Kampagne[nodePos], containerk);
}
Avatar billede mat Nybegynder
18. januar 2007 - 20:08 #3
har du tjekket at onMotionFinished bliver kaldt?
Avatar billede fauer Nybegynder
19. januar 2007 - 11:11 #4
Nej hvordan gør jeg det?
Avatar billede mat Nybegynder
19. januar 2007 - 11:13 #5
laver et trace i din onMotionFinished (et generelt tip når tingene ikke gør som man gerne vil; trace hvert step igennem programmet).

mvh mat
Avatar billede fauer Nybegynder
19. januar 2007 - 11:40 #6
trace(Kampagne[nodePos]);??

Der sker ingenting
Avatar billede mat Nybegynder
19. januar 2007 - 11:49 #7
Ja så bliver den jo ikke kaldt ;)

Da du har deklareret din image_tweenk som en lokal variabel i loadItems så kan du ikke fange referencen til den udenfor funktionen.

mvh mat
Avatar billede fauer Nybegynder
19. januar 2007 - 11:58 #8
image_tweenk.onMotionFinished = function () {
nodePos++;
image_mclk.loadClip(Kampagne[nodePos], containerk);
trace(Kampagne[nodePos]);
}

Hvis jeg gør sådan prøver jeg så ikke at fange referencen inde i funktionen?
Avatar billede mat Nybegynder
19. januar 2007 - 12:31 #9
Kig på det her snit af din kode

// ---
var image_tweenk:Object = new Tween(containerk, "_alpha", Regular.easeOut, 0,  100, 2, true);
};

image_tweenk.onMotionFinished = function () {
// ---

den væltede tuborg i linie 2 betyder du har lukket den funktion hvori "image_tweenk" er lokal, derefter prøver du at sætte en eventhandler på den - men den er lokal i en anden funktion og "image_tweenk" findes slet ikke i det scope du prøver at definere en eventhadler til den.

mvh mat
Avatar billede fauer Nybegynder
19. januar 2007 - 13:16 #10
mat, du imponerer mig med din toldmodighed... er du underviser i ActionScript til hverdag?

Nu hvor jeg har fået onMotionFinished functionen ind på plads får jeg tracet undefined, men det kommer rigtig nok frem efter tween har fundet sted.
Avatar billede mat Nybegynder
19. januar 2007 - 13:31 #11
Hvad hvis du kun tracer nodePos? (nej, jeg underviser ikke i ActionScript).
Avatar billede fauer Nybegynder
21. januar 2007 - 19:29 #12
Så står der bare 1
Avatar billede fauer Nybegynder
21. januar 2007 - 19:31 #13
Har det noget med mit XML at gøre?
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
    <Product Header = "Super PC med DVD-brænder" Name = "FSC DAN-889240-037" Description = "Solid allround PC der dækker familiens behov for f.eks. Internet, tekstbehandling, homebanking m.v." FileName = "-8590351708825400808_pc01.gif" Pris = "149-" KtPris = "4.799,-" Kampagne = "kampagne.jpg" />
    <Product Header = "Fujitsu Siemens PC Pakke" Name = "FSC DK-P6SUM3-001" Description = "Stærk basis PC hvor du med tekstbehandling og regneark nemt holder styr på husholdningsbudgettet.- mulighederne er mange for bare kr. 199,- om måneden." FileName = "-8590351707387275808_pc02.jpg" Pris = "349,-" KtPris "8.799,-" Kampagne = "gifgif.gif"/>
</NewDataSet>
Avatar billede mat Nybegynder
21. januar 2007 - 21:37 #14
Så du kan godt fange nodePos, kan du trace Kampagne arrayet? trace ALT ;)
Avatar billede fauer Nybegynder
24. januar 2007 - 14:11 #15
Nej der står bliver tracet undefined.
Avatar billede fauer Nybegynder
25. januar 2007 - 10:48 #16
mat jeg kan stadig ikke få det til at virke....
Avatar billede mat Nybegynder
25. januar 2007 - 11:19 #17
Jeg tror umiddelbart problemet er at "Kampagne" ligger uden for scopet, hvad hvis du skriver _root.Kampagne og tracer det fra din onMotionFinished?
Avatar billede fauer Nybegynder
25. januar 2007 - 11:34 #18
der bliver tracet undefined
Avatar billede mat Nybegynder
25. januar 2007 - 12:11 #19
Hvordan ser din kode ud nu? Der er kun to grunde til at Kampagne tracer undefined, og det er enten at den reelt er undefined dvs den findes overhovedet ikke (er eller decideret sat til værdien "undefined"), eller også findes den bare ikke i det scope du kigger i (hvilket basically er det samme scenarie som førstnævnte).

Hvad sker der hvis du skriver;

var image_tweenk:Object = new Tween(containerk, "_alpha", Regular.easeOut, 0,  100, 2, true);
// ny linie
image_tweenk["kam"] = Kampagne;

og fra onMotionFinished tracer this["kam"] ?
Avatar billede fauer Nybegynder
25. januar 2007 - 13:11 #20
Sådan her?

var image_tweenk:Object = new Tween(containerk, "_alpha", Regular.easeOut, 0,  100, 2, true);
image_tweenk["kam"] = Kampagne;

image_tweenk.onMotionFinished = function () {
nodePos++;
image_mclk.loadClip(Kampagne[nodePos], containerk);
trace(this["kam"] );
}
};

Så bliver "kampagne.jpg" tracet efter Tween"_alpha" er færdig, og ikke "gifgif.gif"
Avatar billede mat Nybegynder
25. januar 2007 - 13:18 #21
Ok men nu kan du i det mindste se array'et? Hvad der står i det ved jeg jo ikke?
Avatar billede fauer Nybegynder
25. januar 2007 - 13:28 #22
XML er vist i min kommentar fra 21/01-2007 19:31:56.
Hvis jeg tracer containerk får jeg tracet _level0.conk. hjælper det mig?
Det jeg ønsker mig er at når Tween"_alpha" er færdig, så bliver "kampagne.jpg" skiftet ud med "gifgif.gif".
Avatar billede mat Nybegynder
25. januar 2007 - 14:17 #23
Jeg er ikke helt med?

"Kampagne" er et array som der står hvad i?
Avatar billede fauer Nybegynder
25. januar 2007 - 14:32 #24
"kampagne.jpg" i første childnode, og andet skulle gerne være "gifgif.gif"
Avatar billede fauer Nybegynder
25. januar 2007 - 14:33 #25
Eller er det mig der ikke forstår hvad jeg selv laver?... det kan jo godt være
:o(
Avatar billede mat Nybegynder
25. januar 2007 - 17:58 #26
Det lyder som om du antyder at nodePos ikke opdateres (nodePos++)? Det virker underligt hvis du kan trace den? Men hvis foregående virkede med at give en reference til Kampagne til dit tween objekt, så gør det samme med nodePos.

mvh mat
Avatar billede fauer Nybegynder
26. januar 2007 - 10:38 #27
mat jeg forstår ikke hvad du mener...
Men på intet tidspunkt har jeg kunne få det til at gå videre til næste childnode (nodePos++) som er gifgif.gif, kun som undefined, men kan sagtens trace/finde første childnode (nodePos), som er Kampagne.jpg.
Avatar billede mat Nybegynder
26. januar 2007 - 15:47 #28
prøv at skrive;

image_tweenk["pos"] = nodePos;

og så i funktionen;

this["pos"] += 1;

Og brug den til at indexe ind i dit array.
Avatar billede fauer Nybegynder
29. januar 2007 - 11:11 #29
Hvordan skal jeg indexe arrayet?

Nu får jeg tracet 1 i mit output window.
Avatar billede fauer Nybegynder
03. oktober 2007 - 10:36 #30
Hej mat, jeg fik det aldrig til at virke, og til sidst droppede jeg det helt.

Men jeg vil gerne belønne din indsats, så send mig et svar.

mvh fauer
Avatar billede mat Nybegynder
03. oktober 2007 - 12:48 #31
aight
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