PDA

Volledige versie bekijken : Movieclip kopieren


Vinc
%Europe/Berlin %541 %2005, 13:59
Hallo mensen-van-het-goede-leven,

ik had een klein vraagje. Hoe kan ik een movieclip een x aantal keer kopieren, en dat elke kopie 15 pixels lager komt te staan? De movieclips moeten wel verschillende waarden meekrijgen..

Het kan een heel dom vraagje zijn, maar het zou me wel erg helpen als ik het weet. Alvast bedankt.


Vincent

Roenes
%Europe/Berlin %556 %2005, 14:20
Kijk eens naar de functie duplicateMovieClip. Daar kun je mee bereiken wat je wilt :)

(F1 > AS reference > MovieClip > duplicateMovieClip)

Vinc
%Europe/Berlin %586 %2005, 15:04
Ik kan nu door middel van een knop een movieclip 1 keer dupliceren op een vaste hoogte/breedte

on (release) {
duplicateMovieClip("movie1", "movie2", 1);
setProperty("movie2", _x, 100);
setProperty("movie2", _y, 100);
}

Maar ik bedoel dus, dat hij via php telt hoeveel items er in de database staan, en zoveel movieclips dupliceert en elke movieclip 10 pixels lager zet.. Het uit de database halen enzo lukt mij wel... Ik zal eens een voorbeeld zoeken.

FredericCox
%Europe/Berlin %607 %2005, 15:34
on (release) {
for(i=0;i<=AantalInDB;i++){
duplicateMovieClip("movie1", ["movie"+i], i);
setProperty(["movie"+i],_x, 100);
setProperty(["movie"+i],_y, 100 + (i*10));
}
}

Probeer zoiets eens,rap geschreven dus weet niet of syntax enzo klopt

Dauntless
%Europe/Berlin %608 %2005, 15:36
on (release) {
for(i=0;i<=AantalInDB;i++){
duplicateMovieClip("movie1", ["movie"+i], i);
setProperty(["movie"+i],_x, 100);
setProperty(["movie"+i],_y, 100 + (i*10));
}
}

Probeer zoiets eens,rap geschreven dus weet niet of syntax enzo klopt
Nu het nieuwe forum er is gaan we al die oude syntax eruit halen hé ;)

on (release) {
for(i=0;i<=AantalInDB;i++){
var mc = duplicateMovieClip("movie1", ["movie"+i], i);
mc._x = 100;
mc._y = 100+ i * 15;
}
}

Vinc
%Europe/Berlin %618 %2005, 15:51
Dankjulliewel! Hiermee kom ik weer een stap vooruit. Ik heb deze code gebruikt:

on (release) {
for(i=0;i<=5;i++){
var mc = duplicateMovieClip("movie1", ["movie"+i], i);
setProperty(["movie"+i],_x, 100);
setProperty(["movie"+i],_y, 100 + (i*30));
}
}

Heb als test even gedaan alsof er 5 in de DB zaten, en hij schuift 30 pixels naar beneden. Het is dus een deel van Dauntless en een deel van FredericCox..

Dan nog één vraagje: Hoe kan ik vanuit de _root variabelen meegeven naar een movieclip? Gebeurt dat automatisch als je in een movieclip een textvak een variabele naam geeft?

Edit: om het duidelijker te maken.. Als ik deze code neerzet in de _root:
for(i=0;i<=5;i++){
var getal = $i;
}

En ik geef in de mc "movie" het textvakje de variabele naam getal, hoort hij dan te werken? Bij mij doet hij dat niet namelijk :D.. Hoe kan ik dat werkend krijgen?

Dauntless
%Europe/Berlin %623 %2005, 15:58
Als je een deel van m'n code gebruikt gebruik je ze beter helemaal, anders heeft het geen nut ;) Er is ook een kans dat bij de volgende versie van flash jouw script niet meer werkt, dus het is het beste om heel m'n code te nemen...

Daarnaast is het ook niet goed om variabele namen te geven aan textvakken. ZEKER niet als je die gebruikt gewoon om variabelen op te slaan. Als je een textvak wilt gebruiken, gebruik dan altijd de instancenaam.

Een variabele aan een mc meegeven:

on (release) {
for(i=0;i<=AantalInDB;i++){
var mc = duplicateMovieClip("movie1", ["movie"+i], i);
mc._x = 100;
mc.eenvar = "hallo";
mc._y = 100+ i * 15;
}
}

Vinc
%Europe/Berlin %627 %2005, 16:03
Als je een deel van m'n code gebruikt gebruik je ze beter helemaal, anders heeft het geen nut ;) Er is ook een kans dat bij de volgende versie van flash jouw script niet meer werkt, dus het is het beste om heel m'n code te nemen...

Daarnaast is het ook niet goed om variabele namen te geven aan textvakken. ZEKER niet als je die gebruikt gewoon om variabelen op te slaan. Als je een textvak wilt gebruiken, gebruik dan altijd de instancenaam.

Een variabele aan een mc meegeven:

on (release) {
for(i=0;i<=AantalInDB;i++){
var mc = duplicateMovieClip("movie1", ["movie"+i], i);
mc._x = 100;
mc.eenvar = "hallo";
mc._y = 100+ i * 15;
}
}


Mjah kijk, jij gebruikt mc._x, alleen wijzigt die instancename telkens omdat het movie1, movie2 en dergelijke is. Jouw code:

on (release) {
for(i=0;i<=5;i++){
var mc = duplicateMovieClip("movie1", ["movie"+i], i);
mc._x = 100;
mc._y = 100+ i * 15;
}
}

Werkt niet

Edit:

for(i=0;i<=5;i++){
["movie"+i].getal.text = $i;
}

Werkt niet om cijfers mee te geven..

Dauntless
%Europe/Berlin %632 %2005, 16:10
on (release) {
for(i=0;i<=AantalInDB;i++){
var mc = duplicateMovieClip("movie1", "movie"+i, i);
mc._x = 100;
mc.eenvar = "hallo";
mc._y = 100+ i * 15;
}
}
Dit moet wel werken hoor...

Vinc
%Europe/Berlin %637 %2005, 16:18
on (release) {
for(i=0;i<=AantalInDB;i++){
var mc = duplicateMovieClip("movie1", "movie"+i, i);
mc._x = 100;
mc.eenvar = "hallo";
mc._y = 100+ i * 15;
}
}
Dit moet wel werken hoor...

Nope.. werkt niet.. Flash mx 2004..

Klik voor .fla (http://www.ietz.nl/mcduplicerenenzo.fla)

Dauntless
%Europe/Berlin %640 %2005, 16:22
Gebruik dit

on (release) {
for (i=0; i<=5; i++) {
var mc = movie1.duplicateMovieClip("movie"+i, i);
mc._x = 100;
mc._y = 100+i*15;
}
}

Wel vreemd, die andere zou toch ook moeten werken :s Ofwel werkt die niet meer sinds mx 2004

Vinc
%Europe/Berlin %704 %2005, 17:54
Dauntless, ik hou van jou! Hij werkt! :)

Roenes
%Europe/Berlin %705 %2005, 17:55
Wel vreemd, die andere zou toch ook moeten werken :s Ofwel werkt die niet meer sinds mx 2004Neej hoor. Je hebt een klein ding over het hoofd gezien. De gewone functie duplicateMovieClip(name, newname, depth) geeft geen referentie naar de nieuwe mc terug. De MovieClip.duplicateMovieClip(newname, depth, initObj); geeft WEL een referentie terug en die gebruik je over het algemeen ook.

Nog een ander verschil tussen beiden: de MC.dupl... kan wel een initObj bevatten terwijl de dupl... dat niet kan :)

Dauntless
%Europe/Berlin %706 %2005, 17:56
Dat had ik inderdaad niet aan gedacht... Goed gezien Roenes :) (Hm, waarom zit ik eigenlijk altijd voor jou te reageren? Je moet me altijd verbeteren :p ).

Roenes
%Europe/Berlin %708 %2005, 18:00
(Hm, waarom zit ik eigenlijk altijd voor jou te reageren? Je moet me altijd verbeteren :p ).Ach, dat houd me scherp ;)

Larsvu
%Europe/Berlin %949 %2005, 23:47
on (release) {
for (i=0; i<=5; i++) {
var mc = movie1.duplicateMovieClip("movie"+i, i);
mc._x = 100;
mc._y = 100+i*15;
}
}

best wel een slimme code. Ik deed altijd:


on (release) {
for (i=0; i<=5; i++) {
movie1.duplicateMovieClip("movie"+i, i);
this["movie"+i] = 100;
this["movie"+i] = 100+i*15;
}
}

Dauntless
%Europe/Berlin %951 %2005, 23:50
's minder schrijfwerk hé :) (En waarschijnlijk zijn er nog wel wat voordelen waar ik nu niet kan opkomen).

Roenes
%Europe/Berlin %985 %2005, 00:38
Uiteraard ook dynamischer want je hoeft maar 1 regel te wijzigen en alles werkt nog naar behoren :)

Larsvu
%Europe/Berlin %366 %2005, 09:47
Ik zie zelf ook zeker de voordelen in van die code van Dauntless. En ik denk dat die voordelen vooral bij het scoping handig zullen zijn.

TheDutch
%Europe/Berlin %377 %2005, 10:03
En niet te vergeten dat het ook nog snelheidswinst oplevert :).