Archief - Flash : tellTarget / with() {}; probleem

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.

NfERnO

Legacy Member
Vandaag heb ik mij nogal zitte frustreren over 'n dingetje da't niet bleek te werken in Flash's actionscript. Het zit zo ongeveer; ik heb 2 movieclips; de ene dient als een onzichtbare "Hitarea" (gebied waar'k met m'n muis overga en flash detecteert het als 'n knop, link, iets interactiefs...) en de andere bevat een animatietje met twee gelabelde keyframes, genaamd "rollover" en "rollout". De bedoeling was dmv de hitarea als je met je muis erop kwam, "rollover" te spelen, en als je muis eraf gaat, "rollout". Dit deed ik dus dmv van de with() { }; instructie... Tss de haakjes moest de instance name komen van m'n animatie-movieclip. Die heb ik gegeven, en tss de haakjes juist ingetikt.
Het rare is nu, als ik m'n flash uitprobeer, krijg ik een error die zegt object not found, terwijl die instance names echt wel juist zijn.

Dan ben ik gaan zoeken op't net naar die error, kom ik nog mensen die hetzelfde probleem hebben, maar er is niet echt een oplossing. Ze zeiden soms wel van te proberen met de instances die je te zien krijgt door je Flash te debuggen. Dit heb ik geprobeerd, en het werkte! Maar dan zit je me't zo'n abstracte namen als instance5 ... En ik moet nog een hoop van dit soort dingen steken in m'n flash, niet echt praktisch dus.

M'n vraag is nu hoe dit eigenlijk komt dat m'n gewone instance name niet werkt? Dit is m'n huidige actionscript:


on (rollOver) {
with (_level0.instance5) {
gotoAndPlay("rollover");}

}
on (rollOut) {
with (_level0.instance5) {
gotoAndPlay("rollout");
}
}


'k zou het enorm fijn vinden als 'r bij iemand nu 'n lampeke ga brande :)

Bigbuddha

Legacy Member
Er vanuit gaande dat uw instance5 op uw _level0(root) staat natuurlijk ->

Code:
on (rollOver) {
_level0.instance5.gotoAndPlay("rollover")

}
on (rollOut) {
_level0.instance5.gotoAndPlay("rollout");
}

staat zowel de knop als je hit area op de root gebruik je gewoon

Code:
on (rollOver) {
_parent.instance5.gotoAndPlay("rollover")

}
on (rollOut) {
_parent.instance5.gotoAndPlay("rollout");
}

deze natuurlijk als actions op de knop. Niet op de frame.

btw: lang geleden dat ik het woord tellTarget nog tegen kwam. Dat is nog van Flash4 geleden.

NfERnO

Legacy Member
thx voor deze 2 actionscriptjes, maar dit's eigenlijk het probleem niet; die instance5 naam voor de knop die m'n debugger aangaf, die werkt. Maar zelf gaf 'k een andere, makkelijker te herkennen, instance naam aan die knop. Het probleem is dat die naam niet blijkt te werken :s Toch bedankt :) Mjah, als het één of andere bug is in flash ofzo (kweenie, het kan eh) dan doe'k het wel met die namen die de debugger aangeeft...

Bigbuddha

Legacy Member
post anders de fla, kunnen we het eens bekijken. Er zitten wel bugs in flash, maar over zoiets simple zal flash niet struikelen

NfERnO

Legacy Member
Okay, 'k hoop dat je'r min of meer aan uit kan; er staat 'n pak meer op dan ik verteld heb. Hier vind je de .fla :link (navbar.fla is degene die je moet hebben) De hitarea staat momenteel op alpha 0% en vind je terug in de layer map: "Button hit areas", "Gain performance_hit" is de layer die je hierin moet hebben.

De button zelf zit in de "Buttons" layer map, "Gain performance" is de knop waar het actionscript al insteekt. (Met de andere ben'k nog bezig...) En ja, ik weet da t die nog geen instance naam heeft, maar je moet eens proberen een instance name te geven, en in de hit area action script die naam in te vullen; het zal niet werken... (bij mij toch niet) Of 'k heb weer 'n lullig foutje gemaakt :)

Bigbuddha

Legacy Member
oke, nu is't duidelijk.

Op frame 1 staat e hit area symbool. En daar geef je de actions scripting mee.

Code:
on (rollOver) {
_root.instance5.gotoAndPlay("rollover");

}
on (rollOut) {
_root.instance5.gotoAndPlay("rollout");
} 
on (release) {
	getURL("http://www.nferno.v3.be/");
}

Kijk nu eens op frame 1 naar je layer waar "instance5" staat. Geen instance, die komt pas op frame 33. Dus flash weet op frame 1 niet waar instance5 is. Daarom werkt het niet. Wat je dus moet doen, is je hit area enkel je laatste frame zetten, waar de anomatie al staat. Dan kan je die wel aanspreken.

zover probleem opgelost.

enkele puntjes nog.

hit area, maak je compleet verkeerd. Waarom gebruik je niet een lege button?
gewoon een nieuwe button maken en de alleen de hit area frame vullen. Dan kan je die gewoon telkens opnieuw gebruiken zonder je hele librabry vol te zetten. En dan moet je niet met alpha werken. Veel makkelijker.

ook _root zou ik nooit gebruiken. wel relatief zoals this. en _parent.

vergeet je instance name ook niet op elk key-frame. Dus ook als je tweened niet vergeten.

'k pas je fla voor deze button even aan, dan zie je wat je "fout" deed.

http://www.bigbuddha.be/donwloads/navbar_debugged.fla

NfERnO

Legacy Member
Ohh, thx :) , die instance names hange dus ook aan nuh bepaalde keyframe vast... En ik maak die buttons me dezen omweg, omda gewone buttons geen rollout animaties ondersteune (in flash mx, voor zover mijn kennis :s). Maar omda'k al op versch sites gezien heb da rollouts wel animatie kunnen hebben; en dus ben'k gaan zoeken hoe da moest. Het ging dus dmv movie clips. Bijkomstig probleem kwam pas achteraf; die movie clips overlappen... Kan 'k dus op twee knoppen tegelijk gaan staan, mag dus niet. En zo ben'k dus uiteindelijk tot deze oplossing gekomen. :p
Ma mercikes eh man :); weer nuh groten hoop frustratie bespaard.

NfERnO

Legacy Member
oh w8 verkeerd gelezen denk'k :p

okay zal 's proberen met lege button, thx

Bigbuddha

Legacy Member
no thanks, je moet ergens beginnen ;)

Je zou voor je buttons nog anders te werk kunnen gaan.
Je maakt een simpele ani. Enkel de heen beweging. Nu maak je heen en terug.

dan maak je een nieuwe layer boven de tween die je net maakte.
Daar zet je een nieuw symbool ctrl+F8. Dit wordt de controller. Die laat je leeg.

frame 1

Code:
stop();

frame 10 //label = "prev"

Code:
this.onEnterFrame = function() {
	_parent.prevFrame()
}

frame 20//label = "next"

Code:
this.onEnterFrame = function() {
	_parent.nextFrame()
}

that's it. Nu heb je een animatie met een controller.
Op je stage zet je dan een button waar je op rollover een btn1.controller.gotoAndStop("next") doet voor vooruit te spelen
en roolout btn1.controller.gotoAndStop("prev") omaechteruit te spelen.

Dan kan je heel mooie button anis maken die niet telkens helemaal moeten spelen.

good luck

NfERnO

Legacy Member
Da kan'k en wil'k wel eens proberen ja :) 'k veronderstel da die frame 10 & 20 een ander framenummer mogen zijn?
Thx again hé :)

servi

Legacy Member
moderator noot :
je topic bevat geen prefix, een verkeerd prefix of heeft een onduidelijke titel.
Gelieve een duidelijke titel met een bijhorend correct prefix te gebruiken.
Voor meer informatie over prefixen kan je terecht op regels en prefixen !!!.
Je topic is aangepast, gelieve in het vervolg er op te letten.
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