Archief - FLASH: AS: attached mc's aanspreken

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

tdskate

Legacy Member
Code:
for (i=1; i<=aWeek.length; i++) {
	mcBtnDay[i].attachMovie("mcBtnDay", "MyBtn", this.getNextHighestDepth());
}
mijn scriptje om mijn menu te genereren, maar hoe spreek ik die nu aan om een script op te zetten, of om hun _y property aan te passen ?

Grts,
T

Bigbuddha

Legacy Member
zoiets

var targetBtn:MovieClip = this["mcBtnDay"+0].MyBtn

trace(targetBtn._y);

De 0 kan je natuurlijk dynamisch maken.

Breen

Legacy Member
als ik mag, nog net iets handiger:

Code:
for (i=1; i<=aWeek.length; i++) {
	var tempTarget:MovieClip = mcBtnDay[i].attachMovie("mcBtnDay", "MyBtn", this.getNextHighestDepth());
}

Bigbuddha

Legacy Member
Breen zei:
als ik mag, nog net iets handiger:

Code:
for (i=1; i<=aWeek.length; i++) {
	var tempTarget:MovieClip = mcBtnDay[i].attachMovie("mcBtnDay", "MyBtn", this.getNextHighestDepth());
}

Is zeker mogelijk. Hangt een beetje van je gewoontes af denk ik. In jouw geval kan je de tempTarget enkek in deze loop aanspreken.

Zelf werk ik liever met het "één functie voor één doel", tezij niet mogelijk.
'k Zou dus eerst de buttons attatchen in 1 functie en de reposition doen ahv een andere functie. Vooral als je met meerdere mensen aan dezelfde code moet werken is dit wat duidelijker.

Freakshow

Legacy Member
2 opties hier:
- Uw code is compleet verkeerd en alle oplossingen hierboven ook
- Ik zie te weinig code om te weten wat er voor die loop gebeurt.

Tip van algemeen nut:
Als je attachMovie gebruikt, defineer je beter waarin die moet komen. Dus begin altijd met this of _root. En eigenlijk raad ik _root ook nog eens af want de _root kan veranderen wanneer je externe swf's gaat inladen. Dus om er zeker van te zijn dat je _root altijd gelijk blijft zet je best op de 1e regel van je 1e frame van je level0 movieclip: global root_mc = this;
Kan je vanaf nu root_mc overal gebruiken, ook in externe swf's en deze zal altijd naar de level0 verwijzen.

Nu over de code zelf:
zonder al te veel uitleg, probeer gewoon eens dit:
Code:
for (i=1; i<=aWeek.length; i++) {
var tempTarget:MovieClip = this.attachMovie("mcBtnDay", "BtnDat_" + i + "_btn", this.getNextHighestDepth(), {_x:(i*30)});
}
verander de waarde 30 in de gewenste afstand van de knoppen.​

Bigbuddha

Legacy Member
Freakshow zei:
2 opties hier:
- Uw code is compleet verkeerd en alle oplossingen hierboven ook
- Ik zie te weinig code om te weten wat er voor die loop gebeurt.

Tip van algemeen nut:
Als je attachMovie gebruikt, defineer je beter waarin die moet komen. Dus begin altijd met this of _root. En eigenlijk raad ik _root ook nog eens af want de _root kan veranderen wanneer je externe swf's gaat inladen. Dus om er zeker van te zijn dat je _root altijd gelijk blijft zet je best op de 1e regel van je 1e frame van je level0 movieclip: global root_mc = this;
Kan je vanaf nu root_mc overal gebruiken, ook in externe swf's en deze zal altijd naar de level0 verwijzen.

Nu over de code zelf:
zonder al te veel uitleg, probeer gewoon eens dit:
Code:
for (i=1; i<=aWeek.length; i++) {
var tempTarget:MovieClip = this.attachMovie("mcBtnDay", "BtnDat_" + i + "_btn", this.getNextHighestDepth(), {_x:(i*30)});
}
verander de waarde 30 in de gewenste afstand van de knoppen.​

huh? rare dingen die je hier zegt.
Hij definieert wel degelijk waarin die attachtMovie komt. Met name mcBtnDay[x]. Dus er is helemaal geen reden om met _root te werken. Wat hij ook niet doet.

Waarom zou je die global root_mc = this; zou gebruiken is me ook niet duidelijk. Dit heeft toch helemaal geen zin. Kan je evengoed _root gebruiken. Tenzij zoals je zegt je met externe clips werkt. Daarom is het gewoon verstandig om nooit _root (of _level0) gebruiken (zeg nooit nooit) Je zou de root clip maar eens moeten inladen in een andere (geloof me kan gebeuren).

Wat wel juist is, is dat je niet het hele verhaal weet. Maar daar vraagt de thread starter ook niet naar. Hij heeft een probleem en we zetten hem op weg om het op te lossen. Het kan altijd beter/korter/anders (cnf mijn een breens tips). Zolang hij de logica erachter snapt weet hij genoeg.

Freakshow

Legacy Member
Bigbuddha zei:
huh? rare dingen die je hier zegt.
Hij definieert wel degelijk waarin die attachtMovie komt. Met name mcBtnDay[x]. Dus er is helemaal geen reden om met _root te werken. Wat hij ook niet doet.

Waarom zou je die global root_mc = this; zou gebruiken is me ook niet duidelijk. Dit heeft toch helemaal geen zin. Kan je evengoed _root gebruiken. Tenzij zoals je zegt je met externe clips werkt. Daarom is het gewoon verstandig om nooit _root (of _level0) gebruiken (zeg nooit nooit) Je zou de root clip maar eens moeten inladen in een andere (geloof me kan gebeuren).

Wat wel juist is, is dat je niet het hele verhaal weet. Maar daar vraagt de thread starter ook niet naar. Hij heeft een probleem en we zetten hem op weg om het op te lossen. Het kan altijd beter/korter/anders (cnf mijn een breens tips). Zolang hij de logica erachter snapt weet hij genoeg.
Kortweg, er is te weinig code om hem deftig te kunnen helpen.

Ik heb mijn antwoord gegeven omdat het gewoonweg raar lijkt om mcBtnDay[x] te gebruiken. Zijn code vereist dat er voor de loop reeds de nodige items aanwezig zijn in mcBtnDay om die knoppen in te steken. En dit lijkt me raar, waarom dan niet meteen de knoppen er in steken en de voorgaande loop die deze gegenereerd heeft?

Nuja het is allemaal wat vaag, meer code zou handig zijn. We zitten hier nu toch maar te gissen in het donker.

Breen

Legacy Member
Freakshow heeft gelijk hier, de opstelling die de poster gebruikt met een dynamische plaats om te attachen is raar. Wel acceptabel, want bij heel specifieke gevallen wil je wel iets attachen aan reeds andere dynamische objecten. Daarom dat ik die code niet in vraag gesteld heb.

BigBuddha, over "Zelf werk ik liever met het "één functie voor één doel", tezij niet mogelijk."

Je kan gemakkelijk een functie aanroepen en tempTarget als parameter meegeven. Ondanks die discussie, een lokale var maken gaat sneller, aangezien de interpreter niet iedere keer terug naar de target scope moet, maar een lokale variabele kan aanspreken. ;)

Daarnaast lijkt je voorbeeld daar (attachen + positionen) te insinueren dat je verschillende keren alle objecten overloopt. Dat is qua performatie absoluut niet wenselijk. Je loopt al over de objecten, dus waarom dan zoveel CPU load verspillen door dat nogmaals te doen. (Nu ga ik wel akkoord dat dat in simpele apps niet uitmaakt)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan