Avatar billede myth Nybegynder
12. maj 2005 - 13:25 Der er 8 kommentarer og
1 løsning

dynamisk load af swf dræber mit actionscript

jeg har et movieclip hvori der indlæses swf filer.

disse filer er blot billeder konverteret til swf da png-24 jo ikke understøttes dynamisk.

sagen er nu den:

på mit movieclip (canvas_left) har jeg følgende actionscript:

on (release) {
    if (this._xscale < 99){
    _root.animZoomLeft()
    } else {
    _root.animZoomOutLeft()   
    }
}

dette fungerer fint når det blot er en jpg der hentes ind. men ved load a swf dræbes denne knapfunktion. hvad kan jeg gøre?
Avatar billede myth Nybegynder
12. maj 2005 - 14:22 #1
hvad jeg nu er kommet frem til må være at swf'en erstatter mit oprindelige mc og derved fjerner den actionscripting der ligger på.

hvordan kan jeg 'genindsætte' den scripting?
Avatar billede myth Nybegynder
12. maj 2005 - 15:18 #2
hvor er eksperterne? :)

jeg har nu prøvet at erstatte ovenstående actionscript med:

onClipEvent (enterFrame) {
    this.onRelease = function() {
        if (this._xscale < 99){
    _root.animZoomLeft()
    } else {
    _root.animZoomOutLeft()   
    }
}
}

men stadig uden held... har jeg ret i at mit containerclip bliver erstattet af den loadede swf?
Avatar billede apache999 Nybegynder
12. maj 2005 - 15:37 #3
Du kunne jo lægge koden et andet sted end på selve clippet.

Nu ved jeg ikke lige, hvordan du henter klippet ind, men hvis vi nu går ud fra, du bruger en MovieClipLoader kaldet mcLoader til formålet og har abonneret på events fra den med en listener af en eller anden art, så kunne du fx gøre således:

var mcListener:Object = new Object();
var mcLoader:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mcListener);

mcListener.onLoadComplete = function(target_mc:MovieClip) {
target_mc.onRelease = function() {
    if (this._xscale < 99){
    _root.animZoomLeft()
    } else {
    _root.animZoomOutLeft() 
    }
}
}

mcLoader.loadClip("ditclip.swf",canvas_left);

//Tror jeg nok
Avatar billede myth Nybegynder
12. maj 2005 - 15:43 #4
hmmm...

da jeg ikke selv har udviklet backend kodningen der kalder til xml er det ikke det store jeg ved om den... men hvad jeg har fundet frem til er at billederne loades sådan her:

_root.canvas_left.loadMovie("pictures/" + pictures[l_Picture][1]);
Avatar billede myth Nybegynder
12. maj 2005 - 15:44 #5
hov der skulle ha' stået mere...

altså swf filen kaldes fra et "kodeord" og derfor har jeg ikke en egentlig kontrol over hvilken swf fil der hentes.
Avatar billede myth Nybegynder
12. maj 2005 - 15:45 #6
jeg tror lige at jeg smider hele scriptet der hender billeder:

function setLeftPicture()
{
    title_left = pictures[l_Picture][0];
    description_left = "“" + pictures[l_Picture][3] + "”";
    _root.canvas_left.loadMovie("pictures/" + pictures[l_Picture][1]);
    left_words = new Array;
    for(i = 0; i < pictures[l_Picture][4].length; i++)
    {
        newName = "l_word_" + i
        left_words[i] = newName;
        _root.keyword_left.duplicateMovieClip(newName,i+100);
        _root[newName].word = pictures[l_Picture][4][i];
        _root[newName].pic  = pictures[l_Picture][5][i];
        if(i == 0) { x = 840; y = 1100; }
        _root[newName]._x = x;
        _root[newName]._y = y;
        x = x + 55;
    }
   
    mySound.loadSound("sound/" + pictures[l_Picture][2], false)

        switchLeftIn();
    }
Avatar billede apache999 Nybegynder
12. maj 2005 - 19:19 #7
Hvis du ændrer i din kode, så den i stedet henter movieclippet ind ved hjælp af en MovieClipLoader, så vil det jo fungere. Det er i øvrigt også bedre kode-stil :)

Meeeen, når det så er sagt, så er det vel muligt at gøre det samme, selv om du bruger loadMovie. Jeg er dog ikke helt sikker på, hvordan eventhandlerne virker med den, men kunne forestille mig, at nedenstående kode skulle kunne gøre det.

Noget i retning af :

_root.canvas_left.onLoad = function() {
this.onRelease = function() {
    if (this._xscale < 99){
    _root.animZoomLeft()
    } else {
    _root.animZoomOutLeft()
    }
}
}
Avatar billede myth Nybegynder
13. maj 2005 - 11:55 #8
efter adskillige test har jeg nu fundet en løsning...

og mit oprindelige actionscript var godt nok. problemet ligger åbenbart i ImageReady's 'komprimering' eller hvad det nu bliver når man eksporterer et foto som swf. danner jeg istedet swf'en via flash er der intet problem og mit actionscript bliver hvor det skal.

det bliver en længere og mere langsommelig proces... men der er desværre ikke tid til at finde påp en bedre løsning da jeg har en deadline kommende med al hast
Avatar billede myth Nybegynder
13. maj 2005 - 11:56 #9
men du for skam de point for din ihærdighed. jeg takker
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

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