PDA

Volledige versie bekijken : path/datatype problem - going nuts here


Flashkiddy
%Europe/Berlin %569 %2008, 13:40
Hey lieve Flashdudes en -dudettes..... mijn post is in het engels, omdat ik ook kirupa heb geprobeerd, maar zonder resultaat. Vandaar dat ik het hier ook wil vragen, maar iedereen snapt toch wel Engels, dus post ik het zo.
Greets,
Erik

PS.
Soms voegt de FlashFocus richTextEditor spaties toe aan de stukjes voorbeeldcode. Lees hier aub eventjes overheen!

The outcome of this code is really weird. Look at this code:

private function showStopmotionAnimation( pId:Number , pShow:Boolean ):Void
{
trace("************************************************** ****");
trace("type : = "+typeof(mPanoImg));
trace("1 : "+mPanoImg);
trace("2 : "+_level0.game_mc.container_mc.scroller_mc.image_mc["mc"+pId]);
trace("3 : "+mPanoImg["mc"+pId]);
trace("4 : "+mPanoImg.mc3);
}

It outputs the following:


************************************************** ****
type : = movieclip
1 : _level0.game_mc.container_mc.scroller_mc.image_mc
2 : _level0.game_mc.container_mc.scroller_mc.image_mc. mc3
3 : undefined
4 : undefined

I want to use the 3rd version:

mPanoImg["mc"+pId]But it always returns undefined.
Do you get what the problem is? "mPanoImg" has been defined as a member of type MovieClip:

private var mPanoImg:MovieClip;and later on
mPanoImg = mAssets.scroller_mc.createEmptyMovieClip( "image_mc" , 0 );I have no idea what is happening here, never seen this before and i work a lot with Flash

Here is my complete class, for those who are interested

Dauntless
%Europe/Berlin %578 %2008, 13:53
Enkel een AS bestand is erg onhandig (tenzij het bv een Document class is). Hoe kunnen we nu iets testen ? ;)

Upload al je bestanden, of maak een gelijkaardige situatie in een nieuwe fla waarin wij kunnen testen. (En include ook ineens het ASAP framework e.d.)

En de 'spatie bug' kan je omzeilen door regelmatig zelf een spatie te zetten in langere regels code.

Flashkiddy
%Europe/Berlin %658 %2008, 15:47
Hmmm, ik kan/mag het niet integraal delen, want er zitten ook AMFPHP authenticatie dingetjes in enzo en mijn baas gaat dit nooit goed vinden. Dan zou ik het probleem moeten isoleren in een klein bestand. Ik werk bovendien met Eclipse, FDT en MTASC , waarbij ik bijna hoofdzakelijk al mijn libraries als 'linked libraries' gebruik. Ik zal na mijn werk eens kijken of ik het probleem afgebakend/geisoleerd kan reproduceren om het met jullie te delen.

Maar toch, als je traces 1,2 en 4 checkt in mijn 2e code-block, dan ga je NU toch al erg hard aan je kop krabben?

Greets,
Erik

Dauntless
%Europe/Berlin %663 %2008, 15:55
Zal wel een logische rede voor zijn.

Doe anders eens een recursieve trace doorheen de parent (met hardcoded-path dan) ?

Flashkiddy
%Europe/Berlin %667 %2008, 16:00
Zal wel een logische rede voor zijn.

Doe anders eens een recursieve trace doorheen de parent (met hardcoded-path dan) ?
Ik heb met XRay de movieclip structuur al verkend en alle movieclips die er moeten staan, die staan er ook. Het probleem is dat als ik ga scopen vanaf 'mPanoImg' , dat het dan niet lukt.

Begrijp me niet verkeerd, mijn app werkt wel, maar ik WIL begrijpen waarom 'mPanoImg.mc3' en 'mPanoImg["mc"+pId]' niet werkt.

Dauntless
%Europe/Berlin %674 %2008, 16:10
Begrijp je niet verkeerd hoor :). (Zo'n lelijke code wil je inderdaad niet in je class).

Ik kan niet meteen iets anders bedenken ...
- Die mc3 is een movieclip die in de ingelade swf zit ?
- Werkt het voor de andere nummers wel ?


Ps: Waarom gebruik je bij de traces niet gewoon 'arguments' ?
trace("Game.drawExerciseWindow("+arguments+")");

Flashkiddy
%Europe/Berlin %677 %2008, 16:15
Ik gebruik die arguments niet, omdat bij eventlisteners vaak veel zooi meekomt die ik niet hoef te zien. Dit is een codetemplate ('systrace') die ik in elke method jaag om mijn application flow te kunnen volgen. Ach ja, beetje persoonlijke workflow.....

mc3 zit idd in een ingeladen swf..... heb daar al een tijd niet mee gewerkt en kreeg het ding gisteren aangeleverd door iemand anders en heb ff de instance names goed gezet..... ik ben benieuwd naar je antwoord :)

Hoe ist trouwens met Flash werk in Antwerpen? Ik denk eraan om daarnaartoe te verhuizen over een tijdje :)

Dauntless
%Europe/Berlin %682 %2008, 16:22
Geen idee, ik studeer nog altijd ;). En als ik werk heb is het eigenlijk meestal voor Nederlanders :D.

Maar: - Werkt het met de andere movieclips/getallen wel ?

Flashkiddy
%Europe/Berlin %454 %2008, 10:55
Nope, alle movieclips die genest zijn in "_level0.game_mc.container_mc.scroller_mc.image_mc" , kan ik alleen benaderen door het absolute pad te definieren. Ik kwam er gisteren ook achter, dat ik via een andere variable tegen mijn diep geneste clips kan aanpraten.

Zo maak ik 1 containerclip aan met daarin weer 2 genest containerclips:
mPano = mAssets.scroller_mc;
mPanoImg = mAssets.scroller_mc.createEmptyMovieClip( "image_mc" , 0 );
mPanoHotSpots = mAssets.scroller_mc.createEmptyMovieClip( "hotspots_mc" , 1 );

Als ik dan mijn diep geneste clips (mc1 , mc2, etc) probeer te benaderen op deze manier:
mPano.image_mc.mc1
of
mPano.image_mc["mc"+pId.toString()]

dan werkt het wel weer.....

Dauntless, jij zei dit:

Ik kan niet meteen iets anders bedenken ...
- Die mc3 is een movieclip die in de ingelade swf zit ?

Die mc1, mc2, etc zitten inderdaad in een ingeladen SWF (een banner die in een losse SWF zit). Waarom vroeg je dat? Toevallig dat je dat zo raadde..... ik doe dit namelijk:

var image_mcl:MovieClipLoader = new MovieClipLoader();
image_mcl.addListener(mMclListener);
image_mcl.loadClip( mData.bannerUri , mPanoImg );

In andere woorden, ik laad die externe, losse SWF file in de variable waar juist het probleem zit...

Dauntless
%Europe/Berlin %474 %2008, 11:23
Dat gokte ik omdat ik anders niet kon vinden hoe mcX gemaakt werd ;).

Maar over je laatste post: Dus je geraakt er wel aan via mPanoImg ?

Flashkiddy
%Europe/Berlin %607 %2008, 14:34
Nee, het lukt niet mbv 'mPanoImg' , maar wel met behulp van 'mPano'
'mPanoImg' reikt 1 laag dieper in de hierarchische structuur.
Zie hier:

mPano = mAssets.scroller_mc;
mPanoImg = mAssets.scroller_mc.createEmptyMovieClip( "image_mc" , 0 );

Met als gevolg:

mPano = _level0.game_mc.container_mc.scroller_mc
mPanoImg = _level0.game_mc.container_mc.scroller_mc.image_mc

Maar nu doet deze het wel:

mPano.image_mc.mc1

en deze doet het niet:

mPanoImg.mc1


Weird............

Dauntless
%Europe/Berlin %623 %2008, 14:57
Euhm... Euhm... I give up :p.

Sorry :(

Flashkiddy
%Europe/Berlin %665 %2008, 15:58
yep , me too........ mijn oplossing:
mPano.image_mc.mc1

**** it, het pad is in ieder geval nog steeds relatief, dus straks kan ik al mijn assets op de _root alsnog in 1 container clip jagen zonder dat sommige paden niet meer kloppen.

Suf dat we hier niet uit zijn gekomen..... toch denk ik dat het iets te maken heeft met het feit dat de mc1, mc2 etc in een andere SWF zitten die ingeladen wordt.

Toch nog erg bedankt voor alle moeite die je hebt willen nemen Dauntless.