Avatar billede mcskelle Nybegynder
13. maj 2003 - 14:12 Der er 18 kommentarer

Properties på en movie fra library kan ikke rigtigt sættes?!?!

Damn, et åndet problem!?!

Jeg har en stribe movies i mit lib. Jeg dragger dem ind i min flash-film og stikker dem hver et fornuftigt instance-navn, og jeg vil nu fra actionscript sætte nogle probs på movie-clip'ne.
Bemærk, at jeg ikke gider at kode DIREKTE på movie-clips'ne....istedet vil jeg gerne have al min kode samlet 1 sted, nemlig frame 1 på et lag for sig selv.

OK, so far so good...only NOT!

Det her virker f.eks ikke som man kunne forestille sig:

enEllerAndenMovie._alpha=30;    heller ikke:
_root.enEllerAndenMovie._alpha=30; eller...
_level0.enEllerAndenMovie._alpha=30;

Til gengæld virker det selvfølgelig hvis jeg koder direkte på den enkelte movie a la:

onClipevent(press){
  this._alpha=30;
}

En anden løsning der virker smooth, er først at duplikere movie-clippet med dublicatMovieClip, men der må være en anden løsning der virker mere efter mit behov.

Sorry for dette low-res begynderspørgsmål, men det sker jo for os alle ikke:-?
Avatar billede flashdevil Nybegynder
13. maj 2003 - 15:53 #1
Hej

Umiddelbart ser det ud som om du gør det rigtigt.

Det må næsten være en spørgsmål om navngivning af dine movieclips.

Eller at dit movieclip ikke "exsistere" når du sætter alpha værdien ?



/h
Avatar billede mat Nybegynder
13. maj 2003 - 16:24 #2
Du kan sagtens gøre det på den måde du gør. Men hvis du vil centralisere kode (som jeg iøvrigt selv synes er en god ide) kan du bruge en syntaks introduceret i MX (hvis du kender den så ignorer resten :)

ex:

clip.onLoad = function() {
// set stuff at load
};
clip.onLoad();
clip.onEnterFrame = function() {
// do stuff at each frame
};

se det er nam nam :)

mvh mat
Avatar billede barklund Nybegynder
13. maj 2003 - 17:01 #3
Det er et spørgsmål om, at din frame-kode eksekveres før dine movieclips initialiseres...

Du kan inden i dit clip have:

_parent.init(this);

Og så i roden:

alphas = {enEllerAndenMovie: 30};
init = function(mc) {
    mc._alpha = alphas[mc._name];
}
Avatar billede mat Nybegynder
13. maj 2003 - 17:08 #4
barklund > jamen hvis det nu er fordi han ikke vil have kode på eller i sine movieclips (der er naturligvis en forskel på de to) er det så ikke nemmere at tjekke for initialiseringen med onLoad()?

mvh mat
Avatar billede barklund Nybegynder
13. maj 2003 - 18:01 #5
Movieclippet er ikke defineret... så kan man hverken sætte properties eller event-handlere... For hvis man kan definere onLoad() så kan man vel også sætte _alpha...
Avatar billede mat Nybegynder
13. maj 2003 - 18:11 #6
ahaa du mener at koden ligger i frame 1 men at movieclippet først findes i f.eks frame 2? så tror jeg at jeg er med, men sådan plejer mine movies nu ikke at se ud :)
Avatar billede mcskelle Nybegynder
13. maj 2003 - 18:45 #7
halløj alle sammen. Først og fremmest sorry for at jeg ikke har kunne tjekke ind før nu.

Mat: 1. som sagt, jeg vil IKKE have kode på mine clips.
    2. movieclippet er ikke defineret? -den må du liiiige    forklare. Som sagt har jeg lavet movieclips, og derefter smidt dem ind i min scene, så klart de er defineret.
De op træder også som objekter/variabler når jeg kigge i debuggeren. Også svar til FlashDevil der siger at de ikke "eksistere".

Barklund: Det lyder interessant det du skriver med rækkefølgen af initialiseringen og du læner dig op af de points jeg har udlovet. Jeg skal lige tjekke det nærmere før jeg lukker spørgsmålet.
Avatar billede mat Nybegynder
13. maj 2003 - 18:59 #8
mcskelle > ehem, den metode jeg nævner er skam ikke noget der skal placeres på clippet, det er timeline script med en clip reference til instancenavnet. Jeg tror det barklund mener er at hvis du laver en reference til dit moviclips properties i frame 1, men clippet slet ikke findes i den frame er det jo klart at flash ikke kan finde en property at sætte. Men så langt havde jeg bare ikke tænkt din problemstilling.

Jeg kan lide centralisering af kode i den forstand at det er rart ikke at have den flydende på symboler, til gengæld mener jeg at den skal stå som framescript i den frame hvor det er relevant :)

mvh mat
Avatar billede mcskelle Nybegynder
13. maj 2003 - 19:13 #9
ups...jeg fik vist byttet lidt om på navnene. Faktisk var det næsten kun barklund jeg burde have skrevet til. Ihverfald det med kode på/i clippet.

Well....Jeg er kørende MX-style nu, og det er da meget nice.

Det er da rart med nogle lidt mere normale (læs: udbredte) metoder til at kode med. Eventhandlers er en af disse, som jeg elsker fra C og andet!

Nu burde macromediadrengene bare lue ud i gamle stenede metoder og funktionaliteter der er arvegods fra tidligere versioner! De fylder bare for meget i API'et og i hjælpen og i eksemplerne osv!
Avatar billede barklund Nybegynder
14. maj 2003 - 01:15 #10
Movieclippet er ikke defineret, når du kører dit frame-script. Ja, movieclippet er på scenen, men dit frame-script kører INDEN din scene initialiseres.

Prøv for eksempel at skrive:

trace("mitClip = "+mitClip+" ("+typeof mitClip+")");

Og læg et movieclip, der hedder mitClip... Så vil du se, at når frame-scriptet kører, så kan de tænkes, af movieclippet ikke er initialiseres så dets instance-navn er endnu ukendt...

/Barklund
Avatar billede mcskelle Nybegynder
15. maj 2003 - 13:58 #11
Vi prøver lige HELT forfra, da jeg er ved at blive sindsyg over ikke at kunne gennemskue hvad fanden der foregår. Det er klart noget med rækkefølgen af initialiseringen af framescripts og mc's.

Nyt senarie:

Min scene indeholder et movieclip på frame 1 kaldet mc (på et separat lag)  OG
Et framescript på frame 1.

Nu vil jeg gerne have mc'en til at blive usynlig idet min film starter.
I framescriptet virker dette ikke som man skulle forestille sig:

mc.onLoad function(){
this._alpha = 0;
}

(Når denne film køres, er mc'en såmen....synlig!?!)


Kan nogen sige mig hvordan jeg nemmest kan komme fra det senarie jeg her illustrere til et functionelt senarie?

TAK PÅ FORHÅND!

PS: stik mig en mail, hvis jeg skal sende jer testsenariet som *.fla
Avatar billede mat Nybegynder
15. maj 2003 - 14:13 #12
mc.onLoad function(){
this._alpha = 0;
}
mc.onLoad();

..min mail står på mit minisite (klik på mit nick)
Avatar billede mat Nybegynder
15. maj 2003 - 14:15 #13
hov, skulle have været:

mc.onLoad = function(){
this._alpha = 0;
}
mc.onLoad();
Avatar billede mcskelle Nybegynder
15. maj 2003 - 14:28 #14
hvaaaaad....skal event handlers nu afsluttes med mc.onLoad(); ?
Så er det sku' nok der at hunden ligger begravet!?!

I api'et skriver de ellers det her:

The following example defines a function for the onLoad method that sends a trace action to the Output window:

myMovieClip.onLoad = function () {
    trace ("onLoad called");
};
Avatar billede mat Nybegynder
15. maj 2003 - 14:35 #15
Det skal MovieClip.onLoad() ihvertfald, det undrede osse mig i sin tid.

Men i princippet er det vel heller ikke helt ved siden af det de skriver i api´en, du definerer en funktion til onLoad() metoden, derefter inwoke´er du den, eller hur?

mvh mat
Avatar billede mcskelle Nybegynder
15. maj 2003 - 14:56 #16
nå nu forstår jeg hvad du mener. Jeg troede det var en del af syntaxen for onLoad - eventen.

Det du skriver virker helt udknaldet men jeg vil da prøve. Som jeg forstår dig, så sætter vi først en eventhandler op der skal reagere når filmen ER loaded.

Det ligner dog en meget klassisk klassesyntax fra c++, hvor du først definerer en klasse, for så bagefter at lave dig 1 instance af klassen.

I flash-verdenen kan det være det skal forstås som: Du laver en eventhandler function - altså en ren beskrivelse af hvad der skal foregå, for så bagefter at lave en 'event-instance' som mc'en kan kalde.

Hvis flash er så objektorienteret, så er det da bare fedt!

far out......men skal da prøves.
Avatar billede mcskelle Nybegynder
15. maj 2003 - 15:02 #17
se nu sker der noget: som mat skriver virker, men kun præcis som mat skriver anden gang!

det her virker f.eks IKKE:

mc.onLoad = function(){
this._alpha = 0;
} mc.onLoad();

(det er det der ligner c++)

Det her virker tilgengæld også:

mc.onLoad = function(){
this._alpha = 0;
}; mc.onLoad();

puha....det er lidt mærkeligt at simple ting i as nogen gange er så sære.
Helt standardiseret er det sku ikke blevet endnu:-(

Men nu har jeg en metodik at arbejde udfra:-)
Tak for hjælpen til jer alle!
SES!
Avatar billede mat Nybegynder
15. maj 2003 - 15:15 #18
Det er fordi jeg ikke er særligt konsekvent:

mc.onLoad = function(){
this._alpha = 0;
};

bør altid afsluttes med ";"

Jeg er ikke helt sikker på hvad du mener jeg skriver, men ovenstående er rent gætværk fra min side.

mvh mat
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