Volledige versie bekijken : Klasse achterhalen die functie heeft aangeroepen
jidijkstra
%Europe/Berlin %654 %2009, 16:41
Iemand een idee of het mogelijk is om een public functie van een klasse erachter te laten komen wat de klasse is die de functie heeft aangeroepen?
Ik heb een Helper-klasse met een public help functie. Als ik deze functie in een andere klasse (bv. MainClass) aanroep met Helper.help(); zou ik in de help functie willen weten dat het MainClass is geweest. Ken dat?! :)
Voor de duidelijkheid zoek ik dus niet naar een oplossing zoals:
Helper.help(this); Maar juist één zonder "this" te gebruiken.
Dauntless
%Europe/Berlin %661 %2009, 16:51
Dat is niet mogelijk op een eenvoudige manier. Dat is helemaal niet meer mogelijk in AS3. (Als iemand toch een manier weet, laat maar weten :)) Je zal 'this' moeten meegeven als argument...
Jan
%Europe/Berlin %676 %2009, 17:13
Dat is niet mogelijk op een eenvoudige manier. Dat is helemaal niet meer mogelijk in AS3. (Als iemand toch een manier weet, laat maar weten :)) Je zal 'this' moeten meegeven als argument...
http://stackoverflow.com/questions/194733/can-a-flex-3-method-detect-the-calling-object
Is important to know that stackTrace is only available on the debugger version of Flash Player
Groeten;
Jan
jidijkstra
%Europe/Berlin %679 %2009, 17:17
Ik kwam de stackTrace-methode hier en daar ook al tegen, maar door de debugPlayer-beperking was dat idd geen voorkeur. Thanks anyway guys, nu weet ik het zeker!
Dauntless
%Europe/Berlin %683 %2009, 17:23
Maar dat is dus enkel te gebruiken tijdens het debuggen van een SWF, niet bij een live SWF.
Jan
%Europe/Berlin %714 %2009, 18:08
Maar dat is dus enkel te gebruiken tijdens het debuggen van een SWF, niet bij een live SWF.
Tuurlijk wel, maar je moet die 'life swf' dan wel afspelen in de debugger versie van de flash player(Dat is de player die FlashTracer bijvoorbeeld ook nodig heeft).
(De debugger playerversie heeft intern meer opties/mogelijkheden dan de standaard versie. Zoals die stackTrace). De hoofdreden om het niet in de standaardplayer te steken is bestandsgrootte beperken.
Maar aangezien de meeste mensen niet de debugger versie plash player plugin in hun browser hebben geïnstalleerd is het niet echt een optie nee.
Waarom niet gewoon this meesturen?
Groeten;
Jan
Dauntless
%Europe/Berlin %727 %2009, 18:27
Tuurlijk wel ... maar is het niet echt een optie nee.
Wel kiezen he :p.
Mocht de applicatie dus bv op een terminal gedraaid worden waarop je kan zorgen dat de Debug player draait dan kan je het gebruiken. Als het online gaat zal het niet gaan.
Jan
%Europe/Berlin %737 %2009, 18:41
Mocht de applicatie dus bv op een terminal gedraaid worden waarop je kan zorgen dat de Debug player draait dan kan je het gebruiken. Als het online gaat zal het niet gaan.
:s
Adobe Flash Player 10 — Debugger Versions (aka debug players or content debuggers)
http://www.adobe.com/support/flashplayer/downloads.html
Groeten;
Jan
Dauntless
%Europe/Berlin %744 %2009, 18:52
Ik bedoel: Op internet draait de SWF op de Flash Player van de persoon die de SWF bekijkt. Dat kan een Debug Player zijn, of dat kan geen Debug Player zijn.
Als de SWF draait op een terminal in een gebouw waarop jij een Debug Player gezet hebt kan je het dus wel gebruiken. In dat geval is de SWF immers enkel toegankelijk via een Debug Player. Zo heb ik ooit bv een SWF gemaakt die moest draaien op een welkomst terminal in een bepaald bedrijf. In dat geval zou ik er wel gebruik van kunnen maken. (Ware het niet dat ze max. FP7 wouden installeren, maar that's besides the point :p)
Je kan toch niet tegen enkel bezoeker van de website zeggen: "Je hebt geen Debug Player die een hoop fouten kan geven op elke Flash site die je bezoekt, dus ga hem downloaden!" ?
jidijkstra
%Europe/Berlin %756 %2009, 19:09
Waarom niet gewoon this meesturen?
Omdat als het niet hoeft, ik het ook niet wil doen... ;)
Ik ben er van overtuigd dat het niet de bedoeling kan zijn om de functionaliteit van een applicatie om wat voor reden dan ook af te laten hangen van de player variant (debug/niet debug) die een gebruiker heeft draaien. Behalve de versie natuurlijk, maar dat spreekt voor zich. Ik sta dan ook volledig achter de laatste zin van Dauntless' laatste post. Het is al lastig genoeg om een gebruiker te dwingen de laatste versie te laten gebruiken (zie marktpenetratie Flash players) laat staan dat iedereen zomaar een debug versie heeft draaien net als wij.
Maar voor we off-topic raken: Kortom, dan maar 1000x "this" meesturen ipv. een paar regels code weggestopt in een klasse. Soms is het gewoon niet anders... Thanks voor jullie bijdrage!
Jan
%Europe/Berlin %768 %2009, 19:26
Je kan toch niet tegen enkel bezoeker van de website zeggen: "Je hebt geen Debug Player die een hoop fouten kan geven op elke Flash site die je bezoekt, dus ga hem downloaden!" ?
Nee en daarom zei ik tuurlijk kan het wel online. En zei ik ook nee het is geen optie, omdat minder dan 1% of zo van de mensen de debug versie hebben (of zouden willen hebben) in hun browser.
Maar voor we off-topic raken: Kortom, dan maar 1000x "this" meesturen ipv. een paar regels code weggestopt in een klasse. Soms is het gewoon niet anders... Thanks voor jullie bijdrage!
Misschien moet je nog eens nadenken over de structuur van je script?
Echt 1000x ? Ik hoor Dauntless al afkomen met:
@Jan: Kan je geen parser schrijven die bij elke call naar Helper.help() de caller meestuurt? (Ja, dat kan. :P)
(@Dauntless: BTW, Ik heb trouwens ook een niet .exe / Windows versie van de detracer command line tool in de bijlage van het 'andere' topic gestoken (voor jou.) :))
Groeten;
Jan
jidijkstra
%Europe/Berlin %772 %2009, 19:32
Misschien moet je nog eens nadenken over de structuur van je script? Echt 1000x ?
Figure of speech... Bovendien, als het een handige klasse is die ik veel gebruik in verschillende projecten, ja misschien wel 1000x in totaal. Who knows. Kan zomaar gebeuren. Heb jij nog nooit 1000x dezelfde regel getikt dan? :P
Dauntless
%Europe/Berlin %786 %2009, 19:51
Ik hoor Dauntless al afkomen met:
@Jan: Kan je geen parser schrijven die bij elke call naar Helper.help() de caller meestuurt? (Ja, dat kan. :P)
Haha, nee hoor ;). Dat andere was logisch om te doen. Dit is gewoon valsspelen :p.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.