Avatar billede alaflam Nybegynder
01. november 2004 - 18:37 Der er 12 kommentarer og
1 løsning

actionscript duplicatemovieclips

Hej,

Efter jeg har leget med den her method i flere dage på at finde ud af hvorfor den ikke virkede, så kom jeg frem til at den MÅSKE kun kan bruges af BUTTON og ikke MovieClips.

Dvs. når jeg tilføjer på movieclips.
on (release)
{
    duplicateMovieClip("minclip", "ball2", 1);
    setProperty ("ball2", _x, "200");
}

så virker koden ikke, men hvis jeg tilføje den kode på Button, så virker koden ??

Det er bare mærkeligt, at jeg ikke får en fejl meddelse fra flash at man hellere ikke må bruge on (release) på movieclips.

Men er det jeg siger rigtige eller forkert, jeg er total i tvivl efter så mange prøvelser.

Jeg håber der er en derude der kan hjælp mig mit problem, så jeg kan komme videre :)

På forhånd siger jeg MANGE tak for dinhjælp.
Avatar billede mat Nybegynder
01. november 2004 - 19:07 #1
Du kan godt bruge on (release) på movieclips (det har man kunne siden flash MX).

Men scopet er anderledes. En knap refererer direkte til den tidlinie den ligger på, mens et movieclip refererer direkte til sin egen tidlinie. (og setProperty er ancient syntaks).

on (release) {
    duplicateMovieClip(_root.minclip, "ball2", 1);
    _root.ball2._x = 200;
}

eller:

on (release) {
    _root.minclip.duplicateMovieClip("ball2", 1);
    _root.ball2._x = 200;
}
Avatar billede alaflam Nybegynder
01. november 2004 - 19:25 #2
Mat.
Tak for tippen vedr.
"Knap":-> Refererer direkte til den tidlinie den ligger på.
"Movieclip":-> Refererer direkte til sin egen tidlinie.

Jeg har nu lagt på min .fla file.

En knap:
on (release) {
    duplicateMovieClip("minclip", "ball2", 1);
    setProperty ("ball2", _x, "200");
}

En Movieclip:
on (release) {
    duplicateMovieClip(_root.minclip, "ball2", 1);
    setProperty ("ball2", _x, "200");
}

Den anden Movieclip (Hedder "minclip")
on (release) {
    minclip.duplicateMovieClip("ball2", 1);
    setProperty ("ball2", _x, "200");
}

Knappen virker fint, og både "den anden movieclip" virker fint, men "En Movieclip" virker ikke, selvom der står "_root" foran ??
Avatar billede mat Nybegynder
02. november 2004 - 10:49 #3
Hos mig er det kun den første af dine eksempler der "virker". Og det ville jeg umiddelbart også have regnet med?

Er du helt med på hvordan stier i flash virker og hvad "_root" er? Når du duplikerer et movieclip med duplicateMovieClip bliver det nye instans kopieret ind i det kopieredes _parent. Altså hvis du kopierer et movieclip i _root vil det nye også ligge i _root. Og hvis du vil flytte det (eksempelvis med setProperty) så skal du pege på det med rette sti.
Avatar billede alaflam Nybegynder
02. november 2004 - 12:56 #4
Jep, som jeg ser det så forstår jeg godt hvordan "path" eller noget "adressering" virker, men flash er lidt forvirrende nogen gange.

Som du nu selv siger, så mener du at de ikke alle 3 virker "kun den ene", hos virker 2, og en af dem ikke virke, det lyder da lidt mærkeligt, måske skulle jeg sende dig min .fla fil.

En sidste spørgesmål.

Hvad er forskellen mellem...
----------------------------------------
minclip.duplicateMovieClip("ball2", 1);
setProperty ("ball2", _x, "200");
----------------------------------------
Og...
----------------------------------------
duplicateMovieClip("minclip", "ball2", 1);
setProperty ("ball2", _x, "200");
----------------------------------------

PS: Hvis du har nogen gode artikler vedr. det her, så må du meget gerne poste adresser, og mange tak forhjælpen.

Husk SVAR :) TAK
Avatar billede mat Nybegynder
02. november 2004 - 13:23 #5
Den første er en movieclip metode, og tager kun et nyt instance navn og en dybde som parametre. Du kopierer altså movieclippet selv ved at kalde metoden på det.

Den anden er en global funktion der yderligere tager det movieclip du vil kopiere som parameter.

Basicly gør de det samme på en forskellig måde. Men der er f.eks forskel på hvad de returnerer og MovieClip.duplicateMovieClip() tillader også et initObject som parameter (ligesom MovieClip.attachMovie), det gør den globale funktion svjv ikke.

Når jeg siger at jeg ikke helt er med på dine eksempler er det fordi du konsekvent IKKE adresserer det nye movieclip, ved dets rette adresse:

on (release) {
    duplicateMovieClip(_root.minclip, "ball2", 1);
    setProperty (_root.ball2, _x, "200"); // ball2 er jo i roden. Det var det med fælles _parent
}

Jeg ved ikke om actionscripts.org har deciderede tutorials om duplicateMovieClip, men det vil jeg umiddelbart tro. Det er under alle omstændigheder et meget godt sted.

mvh mat
Avatar billede mat Nybegynder
02. november 2004 - 13:24 #6
hov, og et svar :)
Avatar billede alaflam Nybegynder
02. november 2004 - 20:21 #7
Jeg siger mange tak, men jeg fik ikke det sidste kan man ikke få en movieclip til at lave en anden movieclip (duplicate)?
Avatar billede mat Nybegynder
02. november 2004 - 21:45 #8
Jo det kan man godt. Enten ved at kalde duplicateMovieClip på det eller kalde den globale duplicateMovieClip med pågældende movieclip som parameter.
Avatar billede alaflam Nybegynder
03. november 2004 - 08:31 #9
En Movieclip:
on (release) {
  duplicateMovieClip(_root.minclip, "ball2", 1);
  ball2._x = 200;
  ball2._y = 200;
}

Den anden Movieclip (Hedder "minclip")
on (release) {
    minclip.duplicateMovieClip("ball2", 1);
    setProperty ("ball2", _x, "200");
}


---------------------------

Men du kan jo se at det ikke virkede, som du selv mente ?
Avatar billede mat Nybegynder
03. november 2004 - 08:45 #10
Åbner flash MX. Tegner en rød cirkel (min sidste fill farve var rød). Markerer den røde cirkel og trykker F8, vælger movieclip.

Tegner en grøn firkant, trykker F8, vælger movieclip og giver den instancenavnet "minclip".

Hvis jeg paster dit første script ind på det røde movieclip og tester sker der ikke noget *synligt*. Retter jeg derimod stien kan jeg nu *se* at den grønne firkant er blevet kopieret, eftersom jeg nu har rykket den.

Hvis jeg paster dit andet script ind på den grønne sker der ikke noget. Hvis jeg derimod retter det til:

on (release) {
    this.duplicateMovieClip("ball2", 1);
    setProperty ("_parent.ball2", _x, "200");
}

Kan jeg nu se at jeg har kopieret pågældende movieclip og rykket det.

Det er muligt at tingene virker anderledes i MX 2004, jeg har det ikke installeret og kan derfor ikke teste.

mvh mat
Avatar billede alaflam Nybegynder
03. november 2004 - 17:49 #11
Det lyder da mærkeligt.
Sådan virker det, jeg har ingen forklare, måske har du (global, movieclip metode)

1. en movieclip (kaldt "minclip") som er en firkant
2. en anden movieclip, som er en cirkel
3. en knap button, som er trekantede.

1. i firkantet, selve movieclip som skal lave kopiere af ligger følgende kode:
-------------------------------------------------
on (release) {
    _root.clip.duplicateMovieClip("ball2", 4);
    setProperty ("_root.clip", _x, "200");
}
-------------------------------------------------

2. I cirklen (movieclip) ligger jeg følgende kode:
-------------------------------------------------
on (release) {
    _parent.clip.duplicateMovieClip("ball2", 1);
    setProperty ("_parent.ball2", _x, "200");
}
-------------------------------------------------

3. I trekantet (button) ligger jeg følgende kode:
-------------------------------------------------
on (release) {
    duplicateMovieClip("_root.clip", "ball2", 2);
    setProperty ("_root.clip", _x, "200");
}
-------------------------------------------------


Det er den eneste måde jeg fik dem til at virke, "this" virker ikke som du har beskrevet.

Det er mærkeligt at de fungere hver på sin egen måde, dvs.
hvis en movieclip skal kopiere en anden movieclip, så gøre man det på en måde,
hvis det er en knap der skal kopiere en movieclip, så gøre man det på en hele anden måde, og
hvis en movieclip skal kopiere sig selv, så gøre man det også på en anden måde. forvirrende.
Avatar billede alaflam Nybegynder
03. november 2004 - 17:50 #12
_root = hoved
_parent = partner/ved siden af

Mon det kan være en forklaring, men hvorfor man ikke kan kan kopiere en anden movieclip ved at bruge _root istedet for _parent forstår jeg ikke !
Avatar billede alaflam Nybegynder
03. november 2004 - 17:55 #13
Åhh, nej glem hvad jeg siger, det er totalt mærkeligt, nu kan jeg godt bruge _root istedet for _parent.
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