|
| befolke med 100 mC med actionScript (langt~ Fra : Poul Skovmand Thingh~ |
Dato : 04-02-03 09:21 |
|
Jeg har et ønske, som jeg ikke kan finde ud af at løse i MX. Det skyldes
nok, at der er et eller andet grundlæggende omkring objekter, funktioner
og movieClips, som ikke helt er på plads endnu.
Jeg har et movieClip (på _level0 (eller _root)), som kalder funktioner
fra første frame i samme film. Min film indeholder kun lag med en frame,
og movieClips'ene har også kun en frame. Alligevel er jeg nødt til at
kalde funktionerne med _parent foran for at det virker! Nogen der ved
hvorfor?
Nå, men når filmen går igang, har jeg et initierings-script, der udføres
kun denne ene gang. I dette script har jeg en "for"-løkke, som virker
(he he, det er heller ikke så svært).
Men i den løkke vil jeg gerne putte mit movieClip på filmen f.eks. 100
gange, tildele dem navne og give dem funktions-kald.
Jeg har prøvet med at have et instance af movieClippet på scenen ved
start og så benytte duplicateMovieClip (men så fik kopierne ikke
funktionskaldene fra den originale), og jeg har prøvet på at skabe nye
objekter, hvortil jeg har attached movieClippet fra Library. Men det gik
i udu for mig.
Følgende kode viser, hvor langt jeg er (fra målet):
// kode som udføres ved start af flash
for (var i = 0; i<100; i++) {
trace (navn);
navn = "Cl"+i;
nytObjekt = new ClMolekyle(navn, i+50);
}
En funktion udenfor initieringsscriptet et andet sted i framen:
// opret et Cl-molekyle
function ClMolekyle(navn, dybde) {
nytObjekt.attachMovie("Cl-", navn, dybde);
}
Kan det passe, at jeg kun får en kopi - nytObjekt overskriver det gamle
nytObjekt?!
Nevermind, giv mig en ny kode - PLEASE!!!
Jeg har osse bakset lidt med prototype, men med fattigt resultat. Men
mit problem er netop, at de nye dynamisk skabte movieClips skal have
funktionskald i sig som f.eks. _parent.bevaegMig(this);
Er der hjælp at hente? Eller kender nogen til en god tutorial angående
selvskabte objekter og prototyper etc.?
Jeg synes ikke, at jeg kan finde nogen på hverken flashkit eller
flashfaq.
--
Med venlig hilsen
Poul Skovmand Thingholm
| |
Peo (04-02-2003)
| Kommentar Fra : Peo |
Dato : 04-02-03 09:33 |
|
Puha-ja det var en lang een.
Kan du ikke prøve at skrive hvad det er du gerne vil pånå - sådan lidt mere
grundlæggende.
Det er svært at sætte sig ind i nøjagtig din situation, men hvis vi får lidt
'grundlæggende' kan det være at vi bedre kan hjælpe, evt. komme med en
alternativ løsning.
/peo
| |
Poul Skovmand Thingh~ (04-02-2003)
| Kommentar Fra : Poul Skovmand Thingh~ |
Dato : 04-02-03 09:58 |
|
Peo <michpeo@msn.com> wrote:
> Kan du ikke prøve at skrive hvad det er du gerne vil pånå - sådan lidt mere
> grundlæggende.
Ok. Kort beskrevet:
Jeg vil gerne have et movieClip placeret fra library via et script.
MovieClippet skal få et instance-navn og det skal indeholde
funktionskald.
Men helst uden duplicateMovieClip. Jeg vil gerne skabe et nyt objekt,
som vha. prototype har fået defineret de egenskaber og methods, som jeg
har brug for, f.eks. _x og _y og mit funktionskald: bevaegMig(this);
Som det er nu, så er jeg nødt til at placere movieClippet mitClip på
stage og give det et funktionskald, f.eks.
onClipEvent (enterFrame) { _parent.bevaegMig(this); }.
Jeg vil gerne have 100 af mitClip, så det ville være fedt at kunne
placere dem dynamisk (og fjerne dem igen, hvilket jeg ikke kan med "fast
placerede" clips).
Og så er der det med, at funktionen måske skal ændres eller nye
funktionskald skal til. Så er det surt at skulle redigere 100 clips'
script.
--
Med venlig hilsen
Poul Skovmand Thingholm
| |
Peo (04-02-2003)
| Kommentar Fra : Peo |
Dato : 04-02-03 15:01 |
|
Hej igen Poul!
Jeg tror jeg er ved at forstå hvad det er du har brug for.
Jeg har lavet et lille eks. (se nedenstående) som skulle være lidt i retningen af hvad du
efterspørger. Koden er vel-kommenteret og så tilpas simpel, så den kan tydes og 'laves om
i'.
Kodestumpen herunder skulle være lige til at copy-paste' ind på den første frame i en
film, hvori der er et symbol i Library'et med et Indentify'er-navn der er 'my_mc'.
// Actionscript begynd
// for-loop der 'køres' 100 gange
for (i=0; i<100; i++) {
/* et midlertidigt objekt skabes og de properties
som det endelige clip skal have assignes */
var tmpObj = new Object();
// eks. _y-værdien forøges med 25 for hvert clip
tmpObj._y = i*25;
// et onClipEvent tildeles - callback.
tmpObj.onEnterFrame = function() {
// for hver frame flyttes clippet 1px mod højre.
this._x++;
};
/*
Nu tilføjes selve movieclippet til roden af filmen; _root
_root.attachMovie(parameter1, parameter2, parameter3, parameter4);
1. parameter: Linkage-navn specificeret i Library'et
for det enkelte Movieclip. I dette tilfælde 'my_mc'
2. parameter: Det nye instance navn.
Her 'myNewClipNo' + i; 'myNewClipNo0', 'myNewClipNo1'..osv.
3. parameter: Dybden - Må ikke være den samme for nogen clip
der befinder sig på samme tidslinie. Her bruges i.
4. parameter: Objekt hvis properties bliver kopieret over i det
nye instance.
*/
_root.attachMovie("my_mc", "myNewClipNo"+i, i, tmpObj);
}
//Actionscript slut
Hvis jeg er helt gal på den eller hvis du har spørgsmål til ovenstående så skriv bare
igen.
/peo
| |
Poul Skovmand Thingh~ (04-02-2003)
| Kommentar Fra : Poul Skovmand Thingh~ |
Dato : 04-02-03 15:22 |
|
Peo <michpeo@msn.com> wrote:
<snip> en hel masse hjælp <snip>
Mange tak. Det var dog utroligt, hvad du der fik svaret på! På flere
timer var jeg kommet halvt så langt, og specielt denne del:
> // et onClipEvent tildeles - callback.
> tmpObj.onEnterFrame = function() {
> // for hver frame flyttes clippet 1px mod højre.
> this._x++;
> };
- har jeg arbejdet på den sidste time. Men det er altså sådan, at man
giver et script-skabt objekt nogle funktionskald. Det virker i min film!
Kanon!
--
Med venlig hilsen
Poul Skovmand Thingholm
| |
Peo (04-02-2003)
| Kommentar Fra : Peo |
Dato : 04-02-03 15:27 |
|
Godt at høre!
Eksemplet skulle være meget læt at bygge videre på, så du kan sikker få det til at danse
præcist efter din pibe.
/peo
| |
|
|