PDA

Volledige versie bekijken : _levels probleem


theFlashWizard
%Europe/Berlin %510 %2005, 13:14
hoi mensjes
ik laad iets in level2 in, dit doe ik zodat alle _root verwijzingen nog kloppen..
daarover wil ik een movieclip met een getekende border zetten..
maar dit lukt al niet:


LabVenster = _level2.createEmptyMovieClip("LabVenster",9999)
trace(_level2.LabVenster)


weet iemand waarom niet?
alvast bedankt!

TheDutch
%Europe/Berlin %515 %2005, 13:22
Omdat levels hoger dan 0 nog niet bestaan. Ze gaan pas bestaan nadat je er iets in hebt geladen met loadMovieNum(). Zie LiveDocs (http://livedocs.macromedia.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flash_MX_2004&file=00001403.html)...

TheDutch
%Europe/Berlin %520 %2005, 13:29
Ik zie net dat je al wat inlaadt op level2, mijn excuses :).
Zou het niet echt weten dan, nooit nodig gehad...

theFlashWizard
%Europe/Berlin %524 %2005, 13:35
ow owke.. nou dat deed ik bij dit kleine voorbeeld dus niet.. maar het echte probleem is dat hij een prototype niet wil starten..
hier ff een erg verkorte versie van het script:


button.onRelease = Release
button.link = "AS_shapetween"

//----------drawLabVenster----------
MovieClip.prototype.drawLabVenster = function($b,$cr,$w,$h) {
trace("drawLabVenster")
}

//----------experiment laden----------
function LoadInit() {
LabVenster = _level2.createEmptyMovieClip("LabVenster",9999)
trace(LabVenster)
trace(LabVenster.drawLabVenster())
LabVenster.drawLabVenster()
}

//----------onRelease----------
function Release(){
mcLoader = new MovieClipLoader();
preload = new Object();
mcLoader.addListener(preload);
preload.onLoadInit = LoadInit
mcLoader.loadClip("flash experimenten/"+this.link+".swf", 2);
}


hij traced:
_level2.LabVenster
undefined
en dus al niet die drawLabVenster..

Zien jullie een fout of n oplossing?

TheDutch
%Europe/Berlin %528 %2005, 13:41
drawLabVenster() heeft geen return waarde :).

theFlashWizard
%Europe/Berlin %534 %2005, 13:49
ja duh :P zover was ik ook nog wel.. ;) maar waarom niet..? :S

TheDutch
%Europe/Berlin %535 %2005, 13:50
Omdat jij geen return waarde terug geeft? ;)

TheDutch
%Europe/Berlin %538 %2005, 13:55
MovieClip.prototype.drawLabVenster = function($b,$cr,$w,$h) {
return "Here is the magic!";
}

theFlashWizard
%Europe/Berlin %540 %2005, 13:58
ow.. ja maar dat boeit niet.. het gaat ook niet om die trace he..
trace("drawLabVenster")
die wil ik hebbe..
maar em.. moet een functie of prototype niet toch iets anders dan undefined teruggeven als ze alleen al bestaan?
volgens mij iig met een functie wel..

TheDutch
%Europe/Berlin %543 %2005, 14:02
Alleen wanneer je trace(functie); doet dan krijg je "[Function]" terug van Flash. Maar wanneer je trace(function()); doet dan wilt hij de return waarde tracen en die is er niet, dus "undefined" :).

Trouwens dit werkt bij mij gewoon:

//----------drawLabVenster----------
MovieClip.prototype.drawLabVenster = function($b,$cr,$w,$h) {
trace("aaadrawLabVenster")
}

trace(LabVenster.drawLabVenster())

theFlashWizard
%Europe/Berlin %545 %2005, 14:04
ow owke.. dus alleen als je de haakjes weglaat.. dat wist ik nie..
gaak ff probere..

maarre Kgeloof ook wel dat dat werkt.. daarom denk ik dat het probleem em in die _level zit..

theFlashWizard
%Europe/Berlin %546 %2005, 14:06
owke.. als ik op diezelfde plek deze traces neerzet:
trace(LabVenster)
trace(LabVenster.drawLabVenster)
trace(drawLabVenster)

komt er dit uit:

_level2.LabVenster
undefined
[type Function]

dus los vind hij em wel.. maar niet in combi met die movieclip? :S ofzo..
iemand die het wat zegt?

TheDutch
%Europe/Berlin %546 %2005, 14:06
Wanneer je jouw FLA en extra files even als bijlage(ZIP bestand) aan deze topic hangt, kan ik er even beter naar kijken. :)

theFlashWizard
%Europe/Berlin %551 %2005, 14:14
is ie dan :)

TheDutch
%Europe/Berlin %554 %2005, 14:18
Het lijkt erop dat de MovieClip class niet in levels hoger de 0 bestaat.

trace(MovieClip)
trace(_level2.MovieClip)

*EDIT: Mijn idee is dat levels hoger dan 0 geen Flash/ActionScript classes tot zijn beschikking heeft of kan hebben.

TheDutch
%Europe/Berlin %555 %2005, 14:20
Mijn idee is dat levels hoger dan 0 geen Flash.ActionScript classes tot zijn beschikking heeft.

theFlashWizard
%Europe/Berlin %560 %2005, 14:26
hmmmm dan moek gaan nadenken over n andere oplossing..
als er geen mensen zijn die je theorie tegenspreken natuurlijk..
maar thnx voor de hulp :)

TheDutch
%Europe/Berlin %564 %2005, 14:32
Het is trouwens logisch dat dit...

trace(_level2.MovieClip)

...niet werkt. Op _level0 werkt het ook niet ;).

Toch denk ik dat de classes niet beschikbaar zijn. Iemand andere ideeën?

TheDutch
%Europe/Berlin %569 %2005, 14:39
Dit werkt wel:

_level2.LabVenster.onEnterFrame = function(){
drawLabVenster()
}

Ben nog even verder aan het kijken...

theFlashWizard
%Europe/Berlin %571 %2005, 14:43
ik ga het denk gewoon in die loadInit zelf zetten..
en niet in een aparte functie/prototype

TheDutch
%Europe/Berlin %572 %2005, 14:44
Dit werkt wel:

_level2.LabVenster.onEnterFrame = function(){
drawLabVenster()
}

Ben nog even verder aan het kijken...
Dit werkt niet, aangezien ik "this" was vergeten. Jammer...
Ik blijf dus bij mijn eerste mening dat de classes en prototypen niet beschikbaar zijn in levels hoger dan 0.

TheDutch
%Europe/Berlin %572 %2005, 14:44
ik ga het denk gewoon in die loadInit zelf zetten..
en niet in een aparte functie/prototype
Goed plan :D.

theFlashWizard
%Europe/Berlin %715 %2005, 18:10
haha :D
moet wat he :P

Dauntless
%Europe/Berlin %719 %2005, 18:16
Wees vriendelijk als mensen je willen helpen... Wij zouden je nu ook gewoon naar de flash help files kunnen sturen hoor, zoals jij altijd zo graag doet bij anderen!
ja duh :P zover was ik ook nog wel.. ;) maar waarom niet..? :S

theFlashWizard
%Europe/Berlin %791 %2005, 19:59
ja maar ik had al gezocht weetje.. (A)
enne die ;) was om aan te geve dat et meer grapje was owke.. :)
dus dit x was ik is niet onaardig.. (A)
maar Kga me denk betere.. zoveel valt er toch nog nie te zoeke op dit forum.. dus we kenne em maar beter gaan vulle he.. :P

raidho
%Europe/Berlin %935 %2005, 23:26
Dit werkt niet, aangezien ik "this" was vergeten. Jammer...
Ik blijf dus bij mijn eerste mening dat de classes en prototypen niet beschikbaar zijn in levels hoger dan 0.

classes zijn absoluut beschikbaar je moet ze alleen juist aanroepen (scope!!)
het prototype staat in de _root je mc staat in _level2

LabVenster.drawLabVenster = _root.drawLabVenster()

werkt wel

TheDutch
%Europe/Berlin %014 %2005, 01:20
Classes zijn misschien beschikbaar, maar prototypen dus niet, je moet ze beschikbaar maken, dat is een wezenlijk verschil :). Trouwens het is LabVenster.drawLabVenster = _root.drawLabVenster en niet LabVenster.drawLabVenster = _root.drawLabVenster()

raidho
%Europe/Berlin %565 %2005, 14:34
Classes zijn misschien beschikbaar, maar prototypen dus niet, je moet ze beschikbaar maken, dat is een wezenlijk verschil :). Trouwens het is LabVenster.drawLabVenster = _root.drawLabVenster en niet LabVenster.drawLabVenster = _root.drawLabVenster()

het lijkt wel een spelletje met woorden, het heeft niets met beschikbaarheid te maken.
voorbeeld
een tekstveld in een movieclip is niet direct te benaderen
je zal altijd altijd de instancenaam van de movieclip moeten gebruiken
(uitzondering -> een run door alle tekstfields on stage/binnen een movie die dynamisch gegenereerd wordt)
dit betekent niet dat het tekstveld niet beschikbaar is maar dat je het in de scope van desbetreffende movieclip moet zoeken
--
terug naar dit topic
het prototype staat in de _root , dus zal je in de scope van de _root moeten kijken om de daar de aanwezige functies/proto's/classes te benaderen

classes en prototypes zijn beide door een gehele movie te bereiken mits je ze in de juiste scope benadert (maar dat geldt voor alles natuurlijk)

betreffende je opmerking over de notatie:
in de door flashwizard bijgeleverde bestanden levert mijn notatie een correcte trace op , jouw notatie levert (wederom bij mij) alleen een 'undefined' op

TheDutch
%Europe/Berlin %624 %2005, 15:59
Als jij twee dozen hebt en in de ene doos zitten sokken en in de andere zit niets, dan zijn de sokken net direct beschikbaar in de lege doos. Pas wanneer je ze in de lege legt/koppeling maakt, dan zijn ze direct beschikbaar in de lege doos.

LabVenster.drawLabVenster = _root.drawLabVenster()
Hier wordt de prototype functie drawLabVenster() op ROOT uitgevoerd en niet op LabVenster. Je krijgt nu de trace te zien van drawLabVenster() op ROOT en niet van LabVenster. Doordat je _root.drawLabVenster() neerzet ipv. _root.drawLabVenster zal LabVenster.drawLabVenster alleen maar de return waarde van _root.drawLabVenster() krijgen en niet de functie zelf.

LabVenster.drawLabVenster = _root.drawLabVenster
Hier zal LabVenster.drawLabVenster de prototype functie drawLabVenster krijgen die zich op de root bevindt. Wanneer je nu LabVenster.drawLabVenster() uitvoerd, voert hij de code van de prototype functie drawLabVenster uit maar dan wel op LabVenster en niet op ROOT.

Om eerlijk te zijn ben ik deze discussie beetje zat. Wanneer je mij nu nog niet begrijpt laat ik je lekker in je waarde :).

Later,
Erwin

raidho
%Europe/Berlin %701 %2005, 17:50
aha we zijn het dus toch eens over het feit dat prototypes en classes
wel overal te bereiken zijn (mits in de juiste scope gezet).

Als jij twee dozen hebt en in de ene doos zitten sokken en in de andere zit niets, dan zijn de sokken net direct beschikbaar in de lege doos. Pas wanneer je ze in de lege legt/koppeling maakt, dan zijn ze direct beschikbaar in de lege doos.


nogmaals het gaat niet om beschikbaarheid het gaat om scope
(maar dit zal wel een verschil van 'visie op')


Om eerlijk te zijn ben ik deze discussie beetje zat. Wanneer je mij nu nog niet begrijpt laat ik je lekker in je waarde :).
de toegevoegde waarde van deze cynische, ironische of leuk bedoelde opmerking ontgaat me volledig;
ik vertrouw er op dat je je commentaar verder kan beperken tot de daadwerkelijke inhoud van een topic

theFlashWizard
%Europe/Berlin %754 %2005, 19:06
ey jongens.. Ksnap helaas niet veel meer van jullie disgusie.. maar wat zou nou voor mij de oplossing zijn? hoe kan ik die ene prototype aanspreken? :$

TheDutch
%Europe/Berlin %757 %2005, 19:10
LabVenster.drawLabVenster = _root.drawLabVenster;

en dan

LabVenster.drawLabVenster();

theFlashWizard
%Europe/Berlin %784 %2005, 19:49
owke thnx :)

TheDutch
%Europe/Berlin %793 %2005, 20:02
Onthoudt wel dat op deze manier de prototype alleen beschikbaar is voor de MovieClip "LabVenster". Ik zie geen mogelijkheid om de prototype voor de hele MovieClip Class in _level2 te krijgen, zodat je voor elke MovieClip "MovieClip.drawLabVenster()" kunt doen.

theFlashWizard
%Europe/Berlin %795 %2005, 20:06
this.drawLabVenster = _root.drawLabVenster;
mischien?
of elke verwijzing naar een mc op die plek van this.. gok ik persoonlijk..

TheDutch
%Europe/Berlin %797 %2005, 20:09
Op die manier leg je de link naar de prototype per MovieClip, zoals ik boven al zei. De prototype global krijgen voor _level2 is mij niet gelukt. Dus ook niet _level2.drawLabVenster = _root.drawLabVenster; ;)

theFlashWizard
%Europe/Berlin %817 %2005, 20:37
oww... sorry je bedoelde hem gewoon aanspreekbaar maken met maar 1x die regel..
en niet per mc een nieuwe..

TheDutch
%Europe/Berlin %820 %2005, 20:41
Ja precies. Ik zou graag willen dat die prototypen op elk _level en de daarop staande MovieClips uit te voeren valt. Maar tot nu toe heeft niemand kunnen vertellen hoe je dat voor elkaar krijgt :).

theFlashWizard
%Europe/Berlin %824 %2005, 20:47
nouja.. mshn komt er nog n heldere geest langs.. :P

kH_
%Europe/Berlin %549 %2005, 14:11
Bedoel je dit soms:

MovieClip.prototype.blaat=function()
{
trace("BLAAT");
}

Op deze manier wordt de blaat() functie aan de MovieClip class zelf gekoppeld. Nu is de blaat() functie voor IEDERE MovieClip, danwel subklassen van MovieClip aan te roepen.
Het is alleen beter om met behulp van AS 2.0 een dynamische subklasse te maken van MovieClip, dan rechtstreeks functies toe te voegen aan MovieClip zelf.

TheDutch
%Europe/Berlin %550 %2005, 14:13
Volgensmij heb jij niet dit hele onderwerp gelezen :).

kH_
%Europe/Berlin %551 %2005, 14:14
ow gosh, is dit weer zo'n forum waar je direct op je antwoorden wordt afgezeken? Nou ja, dan is dit ook weer mijn laatste post op dit forum. Echt ZONDE van de tijd :(

TheDutch
%Europe/Berlin %553 %2005, 14:17
Ik wist niet dat we direct gingen janken wanneer ik even meld dat uit alles blijkt dat jij dit onderwerp niet gelezen hebt.

Je hulp wordt echt wel gewaardeerd maar dan moet je wel weten waar je het over hebt. Lees het onderwerp maar eens volledig en je zult weten wat ik bedoel :).

kH_
%Europe/Berlin %600 %2005, 15:25
Ok, ff opnieuw dan:

var loader:MovieClipLoader=new MovieClipLoader();
MovieClip.prototype.bla=function()
{
trace("bla");
}

onLoadInit=function()
{
_level2.bla();
}

loader.addListener(this);
loader.loadClip("test.swf",2);

Even iets over dat geneuzel met classes e.d. Of een klasse al dan niet beschikbaar is heeft niets te maken met levels. Een klasse zoals MovieClip is gewoon een klasse die globaal binnen Flash beschikbaar is. Dit heeft niets met een huidige level of wat dan ook te maken. Zou een beetje vreemd zijn, wanneer je bijvoorbeeld op _level2 ineens niet meer kan zeggen 'var bla:Number=new Number()'. Je zegt dan niet iets van new _root.Number(). Dat slaat bijvoorbeeld nergens op. De standaard Flash classes zoals MovieClip, Number, String, Math e.d. zijn gewoon globaal beschikbaar.

TheDutch
%Europe/Berlin %604 %2005, 15:30
Dit heb je volgensmij niet zelf eerst getest, dit werkt dus niet.

Op deze manier kan je wel allerlei iedeën gaan neerzetten, maar dat brengt alleen verwarring wanneer je het niet eerst zelf test. :).

TheDutch
%Europe/Berlin %605 %2005, 15:31
Even iets over dat geneuzel met classes e.d. Of een klasse al dan niet beschikbaar is heeft niets te maken met levels. Een klasse zoals MovieClip is gewoon een klasse die globaal binnen Flash beschikbaar is. Dit heeft niets met een huidige level of wat dan ook te maken. Zou een beetje vreemd zijn, wanneer je bijvoorbeeld op _level2 ineens niet meer kan zeggen 'var bla:Number=new Number()'. Je zegt dan niet iets van new _root.Number(). Dat slaat bijvoorbeeld nergens op. De standaard Flash classes zoals MovieClip, Number, String, Math e.d. zijn gewoon globaal beschikbaar.
Als jij eens wat beter zelf zou gaan testen en dit onderwerp helemaal leest, dan zal je begrijpen waar mijn "geneuzel" vandaan komt :).

kH_
%Europe/Berlin %606 %2005, 15:32
Uhm, ik heb dit getest en het werkt kerel ;)

Misschien handig om even na te vragen -> Welke flash versie gebruik je?

TheDutch
%Europe/Berlin %608 %2005, 15:35
Flash Player 7 - ActionScript 2.0.

En het werkt niet! Dus kom jij nu maar eens met een FLA waar het wel mee werkt :).

TheDutch
%Europe/Berlin %610 %2005, 15:38
Het ligt aan de ingeladen SWF :).

theFlashWizard, kom eens met de FLA van de ingeladen SWF. Daar is wat mis mee waardoor dingen dus niet werken! Toch raar, aangezien je zou denken dat de external SWF hier niets mee te maken heeft.

Top kH_ dat je me weer op onderzoek hebt gestuurt.

kH_
%Europe/Berlin %611 %2005, 15:40
Komtie...ennuh...verwarring saaien is niet mijn bedoeling, ik zal ook bepaalde zaken die je over classes aangaf in deze thread verder niet melden, maar DAAR had ik in eerste instantie op gereageerd toen ik doelde over geneuzel over classes ;)

TheDutch
%Europe/Berlin %613 %2005, 15:42
Ik zal ook bepaalde zaken die je over classes aangaf in deze thread verder niet melden, maar DAAR had ik in eerste instantie op gereageerd toen ik doelde over geneuzel over classes ;)
Jongen, doe nou niet net alsof je me een afgang bespaart. De prototype en MovieClip class zoals hij op _level0 beschikbaar is, is niet beschikbaar op _level2 wanneer ik zijn external SWF inlaadt.

kH_
%Europe/Berlin %614 %2005, 15:45
Zo, wat zijn we snel op onze teentjes getrapt zeg! Man man, ben je de guru hier ofzo? Je hoeft niet alles te weten hoor, maar dat gezeur van je over het feit dat de built-in classes van Flash niet op _level2 beschikbaar zijn, dat is gewoon grote onzin!! Ik heb helemaal geen zin in dit soort 'mijn pik is groter dan die van jou' praatjes, maar ja....jij vraagt er al direct om. Oh, en als dit al een reden is om mijn account hier te verwijderen, dan heb ik zoiets van....graag zelfs.............

Dauntless
%Europe/Berlin %616 %2005, 15:48
Zo, wat zijn we snel op onze teentjes getrapt zeg! Man man, ben je de guru hier ofzo? Je hoeft niet alles te weten hoor, maar dat gezeur van je over het feit dat de built-in classes van Flash niet op _level2 beschikbaar zijn, dat is gewoon grote onzin!! Ik heb helemaal geen zin in dit soort 'mijn pik is groter dan die van jou' praatjes, maar ja....jij vraagt er al direct om. Oh, en als dit al een reden is om mijn account hier te verwijderen, dan heb ik zoiets van....graag zelfs.............
Gewoon rustig discusieren graag. Hetzelfde geldt voor TheDutch! TheDutch, toon jij dan aan de hand van een .fla aan dat wat hij zegt niet waar is (en dat die classes dus niet op lvl 2 beschikbaar zijn). Uit deze discusies valt best veel te leren, maar gelieve gewoon rustig je mening te verdedigen. :)

TheDutch
%Europe/Berlin %617 %2005, 15:49
Zo, wat zijn we snel op onze teentjes getrapt zeg! Man man, ben je de guru hier ofzo? Je hoeft niet alles te weten hoor, maar dat gezeur van je over het feit dat de built-in classes van Flash niet op _level2 beschikbaar zijn, dat is gewoon grote onzin!! Ik heb helemaal geen zin in dit soort 'mijn pik is groter dan die van jou' praatjes, maar ja....jij vraagt er al direct om. Oh, en als dit al een reden is om mijn account hier te verwijderen, dan heb ik zoiets van....graag zelfs.............
Luister eens! Ik zeg net dat mijn theorie van toepassing was op ZIJN external SWF. Dus loop niet dingen te zeggen die ik nooit zo beweerd heb. Verder was jij volgensmij degene die al gelijk aan het janken was en weg wilde gaan...

Ga je grote mond eens ergens anders legen! :mad:

TheDutch
%Europe/Berlin %618 %2005, 15:50
Gewoon rustig discusieren graag. Hetzelfde geldt voor TheDutch!
Ok Dauntless, mjn excuses. Maar deze meneer gingen even net iets te ver!

TheDutch, toon jij dan aan de hand van een .fla aan dat wat hij zegt niet waar is (en dat die classes dus niet op lvl 2 beschikbaar zijn). Uit deze discusies valt best veel te leren, maar gelieve gewoon rustig je mening te verdedigen. :)
Zie mijn post #48 (http://www.flashfocus.nl/forum/showpost.php?p=4679&postcount=48)

kH_
%Europe/Berlin %620 %2005, 15:54
Mooi dat het forum toch zo in de hand wordt gehouden en sorry inderdaad dat ik zo bot reageerde, maar ik kan niet goed tegen bijdehandjes. Willen mensen nou wat leren of niet? Het enige wat ik heb gedaan is mijn reacties aanpassen op reacties van TheDutch.

TheDutch -> ik zal je voortaan negeren, het is nu al duidelijk dat wij elkaar niet zo liggen hiero ;)

TheDutch
%Europe/Berlin %625 %2005, 16:00
Als dat jouw manier van dingen oplossen is, best joh!

Onhoudt alleen wel dat het niets met bijdehandheid te maken heeft, maar met de ervaring die ik alreeds heb opgedaan met de files die ik heb gekregen van theFlashWizard. Vanaf het begin vond ik het ook raar net zoals jij, wat jij allemaal zegt kan ik alleen maar beamen. Echter leerde dit onderwerp icm. zijn files mij dat het niet (altijd) zo is. Jij hebt later weer bewezen dat het wel zo is en dat het dus aan zijn files lag, TOP! Gelukkig dan was ik toch niet gek geworden :).

Misschien als jij alreeds een aantal uren met zijn files had gestoeid, dat je mijn standvastigheid en ideeën kon begrijpen...

TheDutch
%Europe/Berlin %629 %2005, 16:07
Even korte update:
theFlashWizard, het ligt dus aan de SWF die je inlaadt. Want wanneer ik een eigen SWF gebruik werkt het wel. Wellicht kan je de FLA tonen zodat we kunnen zien wat daar nu mis mee is waardoor dit allemaal gebeurd? Het blijft raar dat in jouw SWF dingen niet beschikbaar zijn op _level2 en met mijn eigen SWF en de SWF van kH_, het wel beschikbaar is :).

kH_
%Europe/Berlin %641 %2005, 16:23
Ah nee joh, dat is niet mijn manier van oplossen. Wanneer reacties gewoon serieus worden genomen ben ik van de partij ;)

Ik had btw de hele post wel even doorgenomen, maar snapte niet goed waar het probleem lag, aangezien het bij mij wel werkte. Na jouw reactie heb ik wel ff wat grondiger gekeken en gezien dat jullie probleem meer lag bij levels ongelijk aan _root level, vandaar had ik een ander voorbeeldje gemaakt.

Laten we de voorgaande discussie tussen ons maar vergeten en gewoon opnieuw beginnen okies?

TheDutch
%Europe/Berlin %643 %2005, 16:26
Lijkt me een puik plan! :)
Was ook nooit mijn bedoeling om zo tegen je uit te vallen.

Heb jij enig idee waarom het met zijn SWF niet werkt? Toch raar dat deze external SWF invloed heeft op wat er wel en niet direct toegankelijk is binnen het level waar de SWF wordt ingeladen.

TheDutch
%Europe/Berlin %653 %2005, 16:41
Ik heb het probleem gevonden!
Wanneer de external SWF lager gepublished is dan Flash Player 7, werkt het niet.

Waarom? Daar ben ik nog niet uit :).
Iemand ideeën?

TheDutch
%Europe/Berlin %656 %2005, 16:45
....................

TheDutch
%Europe/Berlin %661 %2005, 16:52
Wanneer ik MovieClip.prototype.drawLabVenster trace binnen de external SWF published naar Flash Player 6 krijg ik undefined. Wanneer ik dit doe naar Flash Player 7 krijg ik keurig [type Function].

Ik maak hier uit op dat prototype functies gemaakt in de hoofdmovie die gepublished is voor Flash Player 7 niet direct beschikbaar zijn in een external SWF die voor Flash Player lager dan 7 is gepublished. Na wat testen blijkt dat wanneer ik de hoofdmovie naar dezelfde Flash Player publish als de external SWF dat het dan wel werkt. Wanneer de versies van de Flash Players waarnaar het gepublished is verschillen, werkt het gewoon niet. Ze kunnen dan blijkbaar niet lekker met elkaar praten. Een andere theorie en uitkomst heb ik niet, maar sta open voor ideeën.

Waarom de Classes van de hoofdmovie niet beschikbaar zijn is me nu geheel duidelijk omdat Flash Player 6 andere Classes heeft dan Flash Player 7 :).

TheDutch
%Europe/Berlin %680 %2005, 17:20
Mijn conclusie:
Wanneer de ingeladen SWF voor een andere Flash Player is gepublished, zijn de Classes en Prototypen(die weer aan Classes hangen) van de hoofdmovie niet beschikbaar in de ingeladen SWF en andersom. Dit omdat de Classes per Flash Player verschillen en niet met elkaar praten. Om toch een prototype aan de ingeladen SWF te geven die gepublished is voor een andere Flash Player, dien je handmatig een koppeling/kopie te maken van de hoofdmovie naar de ingeladen SWF.

Ik hoop dat de mensen die mijn verhaal over Classes en Prototypen "geneuzel" vonden, het nu snappen ;).

kH_
%Europe/Berlin %683 %2005, 17:24
Je hebt helemaal gelijk. Ik heb zelf ook nog even het een en ander getest en het klopt inderdaad.

Wat ik echter wel vreemd vond is het feit, dat LabVenster in principe een 7.0 MovieClip zou moeten zijn, aangezien het in een 7.0 SWF wordt aangemaakt. Dit is echter ook niet zo. Ik heb even de SWF versie van LabVenster opgevraagd en daarbij geeft ie inderdaad 6.0 aan.

Waarom de prototype niet werkt is erg logisch. Een prototype is de base-class van een class waar je bijvoorbeeld een functie aan wilt toevoegen. In de code voeg je een functie toe aan een Flash 7.0 base-class. Logischerwijs zal deze nooit beschikbaar zijn in een Flash 6.0 base-class en dat is nu net wat LabVenster is geworden, omdat de MovieClip toe wordt gevoegd aan een 6.0 SWF.
Simpel gezegd, je voegt een functie toe aan een class, waarvan LabVenster geen subclass is ;)

Mooi werk TheDutch!

Reactie op je laatste zin....ouch ;)

Ow, nog een andere oplossing die wel werkt (aangezien je op deze manier een functie toevoegt aan de 6.0 class):

LabVenster.__proto__.drawLabVenster = function($b,$cr,$w,$h) {
trace("drawLabVenster")
}

TheDutch
%Europe/Berlin %685 %2005, 17:26
Dank je wel! Maar vergeet niet dat jij mij weer op dit speurwerk hebt gezet :).
We zijn er mooi met z'n tweeën uitgekomen.

TheDutch
%Europe/Berlin %686 %2005, 17:29
Wat ik echter wel vreemd vond is het feit, dat LabVenster in principe een 7.0 MovieClip zou moeten zijn, aangezien het in een 7.0 SWF wordt aangemaakt. Dit is echter ook niet zo. Ik heb even de SWF versie van LabVenster opgevraagd en daarbij geeft ie inderdaad 6.0 aan.
Dit is eigenlijk best logisch aangezien het in _level2 wordt aangemaakt en _level 2 is Flash Player 6 :).

_level2.createEmptyMovieClip("LabVenster",9999)

TheDutch
%Europe/Berlin %688 %2005, 17:30
Ow, nog een andere oplossing die wel werkt (aangezien je op deze manier een functie toevoegt aan de 6.0 class):

LabVenster.__proto__.drawLabVenster = function($b,$cr,$w,$h) {
trace("drawLabVenster")
}
Ja, klopt. Ik had paar minuten geleden al zoiets gepost, maar weer weggehaalt omdat ik er niet zeker van was. Top, dat je het nog even plaatst...want dit is eigenlijk de oplossing voor theFlashWizard wanneer hij de external SWF niet kan publishen naar Flash Player 7. :)

kH_
%Europe/Berlin %688 %2005, 17:31
Klopt. Heb je trouwens mn verhaal van die __proto__ al gezien? Dat scheelt wel weer tikwerk, wanneer je weer nieuwe MovieClips gaat aanmaken. Zie onderstaande code:

LabVenster = _level2.createEmptyMovieClip("LabVenster",0)
LabVenster2 = _level2.createEmptyMovieClip("LabVenster2",1)

LabVenster.__proto__.drawLabVenster = function($b,$cr,$w,$h)
{
trace("drawLabVenster")
}

trace(LabVenster)
trace(LabVenster2.drawLabVenster)
LabVenster2.drawLabVenster()

Dat werkt ook, omdat je nu daadwerkelijk een functie toevoegt aan de 6.0 class :)

Haha, je post zo snel dat mijn posts alweer iets uit de geschiedenis zijn ;)

TheDutch
%Europe/Berlin %689 %2005, 17:32
Ja, had ik gezien je. En nogmaals top!
Dit lost het probleem denk ik grotendeels op voor theFlashWizard :).

TheDutch
%Europe/Berlin %689 %2005, 17:33
Haha, je post zo snel dat mijn posts alweer iets uit de geschiedenis zijn ;)
Je bent al de tweede die dit vandaag zegt :p.
Toch maar wat snelheid minderen...

Dauntless
%Europe/Berlin %698 %2005, 17:45
Je bent al de tweede die dit vandaag zegt :p.
Toch maar wat snelheid minderen...
En als je zo verderdoet gaan het er vandaag alleen al nog 3 zijn ;).
Maar super dat jullie je meningsverschillen hebben opgelost en nu goed samenwerken ;) :) Doe zo voort zou ik zeggen :D

theFlashWizard
%Europe/Berlin %795 %2005, 20:05
huh.. sorry voor mijn afwezigheid in deze disgusie maarre de instancename van de mc gebruiken ipv de algemene MovieClip is dus de oplossing?

TheDutch
%Europe/Berlin %796 %2005, 20:07
Nee, je moet gewoon even je external SWF publishen voor Flash Player 7 :).
Voor meer info over de werkelijke oorzaak, moet je nog maar eens rustig en goed lezen vanaf post #60.

theFlashWizard
%Europe/Berlin %827 %2005, 20:51
oww owke.. hmm naja Khoop dat het voor anderen dan maar een oplossing is.. :)
ik zou al mijn experimenten moeten aanpassen naar v7.. geen doen dus.. dus voor mij helaas nie..
maar thnx voor al jullie moete he.. en idd goed dat jullie het toch nog hebbe kunnen bijleggen ;)

TheDutch
%Europe/Berlin %844 %2005, 21:15
Je kunt ook naar kH_ zijn manier kijken, post #67 (http://www.flashfocus.nl/forum/showpost.php?p=4746&postcount=67) :).

Maar je kunt toch ook de external SWF's in een MovieClip laden en bovenop die MovieClip een andere MoveClip leggen met een border?

Folkert
%Europe/Berlin %875 %2005, 22:01
Dus als ik het wel begrijp, en het in het plat nederlands moet vertalen is de situatie in flash als volgt ?

Publiseer je movieA voor flash 6 en laad je die vervolgens in, in movieB, welke voor player 7 is gepubliseerd. dan heb je pech, en vice versa ook. Pech in de zin dat een prototype dan dus niet gaat werken.
Als dat de situatie is, dan weeeeeeh ;)

TheDutch
%Europe/Berlin %879 %2005, 22:06
Ja, dat is in plat Nederlands inderdaad de situatie :).
Je moet dus eigenlijk per SWF rekening houden met de Flash Player versie waarvoor het is gepublished en wat de consequenties daarvan zijn.