PDA

Volledige versie bekijken : String replace van Tha Narie


Fl4sh3r
%Europe/Berlin %831 %2005, 20:56
Bij het zoeken naar een replace methode stuitte ik op de proto van ThaNarie (http://www.flashfocus.nl/forum/showthread.php?t=292), helaas krijg ik hierbij een foutmelding, ik krijg het maar niet voor elkaar om het te fixen...

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 18: There is no method with the name 'replace'.
trace("abacadaeafag".replace("a","!"));

Total ActionScript Errors: 1 Reported Errors: 1

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

a = _root.createEmptyMovieClip("abc", 1);
a.test();
Geeft wel de gewenst output...

String.prototype.test = function() {
trace("blaat!");
}

"a".test();
Daarentegen werkt weer niet. Het is net alsof ik geen methodes kan toevoegen aan het String prototype...

Heeft iemand suggesties?

Tha Narie
%Europe/Berlin %834 %2005, 21:01
Je kan ze wel toevoegen, maar je kan ze niet als "a".aanroepen();
Je moet er eerst een variable van maken:

a = "a";
a.aanroepen();

Is zo sinds AS2/Flash2004

Fl4sh3r
%Europe/Berlin %859 %2005, 21:37
Bedankt, dat maakt inderdaad een groot verschil.

Ik liep echter nog steeds tegen dezelfde melding aan in de movie waaraan ik echt werkte. (Die code natuurlijk even in een schone movie getest).

In die movie wilde het nog niet werken, na een korte zoektoch bleek dat dit ook niet werkt:
var a:String = "abacadaeafag";
trace(a.replace("a","!"));

Zo werkt het wel:
var a = "abacadaeafag";
trace(a.replace("a","!"));

Is hier ook een logische verklaring voor? Anders ben ik het volgende maand (week) alweer vergeten :I

Misschien ook handig om in je post (http://www.flashfocus.nl/forum/showthread.php?t=292) te vermelden.

Folkert
%Europe/Berlin %876 %2005, 22:02
logische verklaring is dat de proto pas beschikbaar is at runTime (voor de as2 String class that is) , daardoor word die eerst niet herkent.
Een enge hack daarvoor (credit moock.org) is de intrinsic class definitie aan te passen. te vinden in je classes map onder bv: c\Documents and Settings\user\Local Settings\Application Data\Macromedia\Flash MX 2004\taal code\Configuration\Classes\String, hij kan verborgen bestand zijn ;)
in die class kan je dan de hack zetten, bv je replace

intrinsic class String
{
//je toevoeging
function replace():String;
}


trouwens als je wat gek doet dan kan je hem wel gewoon gebruiken met aangepaste code welliswaar, maar goed werkt die wel direct en zonder foutmelding.

var a:String = "blabla";
a["replaceMe"]("a","!");

Nylz
%Europe/Berlin %901 %2005, 22:38
Jullie zijn helden voor het bedenken van dit script. Het is ideaal om die vervelende '&'-symbolen toch in flash te kunnen krijgen via PHP.

Bedankt!