Avatar billede kalleballe Nybegynder
12. juli 2003 - 15:52 Der er 7 kommentarer og
1 løsning

dynamisk generede movieclips med dynamisk indhold

Okay jeg har stadig problemer ;-)

Jeg kan ikke få maskinen! til at lave nogle movieclips som den så fylder med indhold!

Hvis jeg f.eks. laver et statisk movieclip og kalder det "print1" og så skriver
print1.loadMovie(picName);
så går det helt fint, - men blot jeg skriver
f.eks. h="print1"
og så
h.loadMovie(picName) så virker det ikke...

nå men jeg vil jo gerne lave mine movieclips automatisk!


Jeg har følgende:

MovieClip.prototype.loadjpg = function(picName, holderName) {
   
    var h = holderName
   
    this.createEmptyMovieClip(h, 1);
    this._visible = true;
    this[h].loadMovie(picName);
        var id = setInterval(function (mc) {
        if (mc[h]._width>0) {
            mc._alpha = 99;
            clearInterval(id);
            mc._visible = true;
            mc.onComplete();
        } else {
            mc.onLoading();
        }
    }, 80, this);
};

som jeg kalder med:

myPic.loadjpg(currentPicName, currentPrint);

og så lige tilsidst:

Hvordan giver jeg et genereret movieClip et linkage navn?


I min 'drømmeverden' vil jeg gerne have følgende:

jeg har et vist antal poster i min xml fil, - f.eks. 20 billed filer, - <billede>print1.jpg</billede>
<billede>print2.jpg</billede> etc.

Jeg vil så gerne lave det antal movieClips (i dette tilfælde 20) og loade mine billeder ind i disse movieclips.

navnet på movieClipsne' skal så være print1, print2, print 3 etc og deres linkage navn skal også være print1, print2 etc

Kan nogen mon hjælpe mig lidt?

vh

KalleBalle
Avatar billede barklund Nybegynder
12. juli 2003 - 15:59 #1
h er jo en streng. h er IKKE stien til dit movieclip...

Skal du lave det dynamisk, så skal du jo evaluere navnet om til en sti:

h = "print1";
trace(typeof h); // string
trace(typeof this[h]); // movieclip
Avatar billede kalleballe Nybegynder
12. juli 2003 - 16:20 #2
men this[h] virker heller ikke....
Avatar billede kalleballe Nybegynder
12. juli 2003 - 16:26 #3
Hvad kan der være galt med:

MovieClip.prototype.loadjpg = function(picName, holderName) {
    var h = holderName;
   
    this.createEmptyMovieClip(h, 1);
    this[h].loadMovie(picName);
    };
Avatar billede barklund Nybegynder
12. juli 2003 - 16:53 #4
Prøv:

MovieClip.prototype.loadjpg = function(picName, holderName) {
    var h = holderName;
    var m = this.createEmptyMovieClip(h, 1);
    m.loadMovie(picName);
};
Avatar billede kalleballe Nybegynder
12. juli 2003 - 17:41 #5
Tak, - du får lige hele mit script, - det ligger i frame 1

//
//
//
stop();
//
// init arrays
PageFile = new Array();
//
//
XMLNode.prototype.sendNodes = function(searchName, callback) {
    for (var i = 0; i<this.childNodes.length; i++) {
        var currentNode = this.childNodes[i];
        if (currentNode.nodeName == searchName) {
            callback(currentNode);
        }
        if (currentNode.childNodes.length>0) {
            currentNode.sendNodes(searchName, callback);
        }
    }
};
//
//
MovieClip.prototype.loadjpg = function(picName, holderName) {
   
    var h = holderName;
    var m = this.createEmptyMovieClip(h, 1);
    m.loadMovie(picName);
    /*
        var id = setInterval(function (mc) {
            if (mc[h]._width>0) {
                mc._alpha = 99;
                clearInterval(id);
                mc._visible = true;
                trace("jeg er her");
                mc.onComplete();
            } else {
                mc.onLoading();
            }
        }, 80, this);
        */
};
//
//
var myDoc = new XML();
var myDocName = "test2.xml";
var myPic = new MovieClip();
myDoc.onLoad = checkStatus;
myDoc.load(myDocName);
//
//
function checkStatus(success) {
    if (success) {
        myDoc.sendNodes("PageFile", handlePageFile);
    } else {
        checkStatus();
    }
}
//
//
function handlePageFile(node) {
    //trace("PageFile "+node.firstChild);
    PageFile.push(node.firstChild);
    //trace("Pagefile length= "+PageFile.length);
    callingMovieClipFx();
}
//
//
function callingMovieClipFx() {
    i++;
    currentPrint = "print"+i;
    currentPicName = PageFile[i-1];
    myPic.loadjpg(currentPicName, currentPrint);
    myPic.onComplete = positionIt;
}
//
function positionIt() {
    this._x = 50;
    this._y = 50;
}

Der sker ikke en sk.....
Avatar billede kalleballe Nybegynder
12. juli 2003 - 17:45 #6
og den stor xml fil ;-)

<Post>
        <PageFile>print1.jpg</PageFile>
        <PageFile>print2.jpg</PageFile>
    <PageFile>print3.jpg</PageFile>
</Post>
Avatar billede kalleballe Nybegynder
12. juli 2003 - 18:27 #7
okay nu virker det:
function callingMovieClipFx() {
    i++;
    currentPrint = "print"+i;
    currentPicName = PageFile[i-1];
    if (!picLoaded) {
    this.createEmptyMovieClip("myPic", 1);
    myPic.onComplete = setIt;
    myPic.loadjpg(currentPicName);
} else {
    myPic._visible = true;
}

}
//
//
function setIt() {
    this._x = 29;
    this._y = 31;
   
    picLoaded = true;
}
Avatar billede kalleballe Nybegynder
13. juli 2003 - 15:58 #8
luk så
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