Wednesday, April 20, 2005

AsBroadcaster for custom events

The undocumented feature AsBroadcaster in Flash MX 2004 allows for custom event dispatching/handling. If you want an object to be able to dispatch events, you can do it in the class' constructor like this:

AsBroadcaster.initialize(this);

Or, if you want, anywhere else, like this:

AsBroadcaster.initialize(object);

This will add, among others, the methods addListener() and broadcastMessage() to the object in question. Thus, if you want the object do dispatch an event, just add the following code to the class code:

this.broadcastMessage("onCustomEvent");

To register an object as a listener for the event, do the following:

object.addListener(listener);

The listener object must then define a method called onCustomEvent in order for it to be able to respond to the event. The object "object" can however not be type declared. That is, if I define it like this, it won't work (getting an error message saying "There is no method with the name 'addListener')":

var object:MyEventCaster = new MyEventCaster();

but if I instead write just

var object = new MyEventCaster();

it works fine. I suppose it is because the event-methods are dynamically added to the object class, and thus, can't be found at compile-time. If the variable isn't properly declared, the compiler won't be able to perform the check.

A more detailed tutorial is provided by FlashGuru. I just wanted to stress that the event-dispatching object cannot be declared with type. Oh, and in Flash MX it is called ASBroadcaster, whereas in Flash MX 2004 it is AsBroadcaster.

UPDATE: I realised that by creating empty methods for the AsBroadcaster-methods to be used, one can still type declare the objects. That is, in the event dispatching class, add the code

function broadcastMessage(){}
function addListener(obj){}

..etcetera. These methods will then be overridden by the call to

AsBroadcaster.initialize(this);

... and it is now possible to use the object declared with type.

Monday, April 18, 2005

Roperom

Infomedia (kanskje alle instituttene, men jeg tror spesielt Infomedia) kunne hatt bruk for et lydisolert roperom vi kunne benytte når programmene vi lager/bruker oppfører seg fjernt fra alle rasjonelle forventninger. Rommet kunne også hatt en slagsekk.

Monday, April 11, 2005

Sirkustragedier

Våren er desverre høysesong for en type uhumsk underholdning vi burde kunne unnvære. Rundtreisende sirkus presenterer dyretragedier kamuflert som uskyldig morro, et gufs fra en fortid hvor man tross alt kunne gjemme seg bak påstanden om at man ikke visste bedre. I dag vet vi bedre, likevel tas barn med og læres opp til å tro at denne absurde underholdningsformen er helt normal, at dyrene trives godt i trange bur og at hele sulamitten er til glede for både deltagere og publikum. Virkeligheten er desverre en helt annen, noe som ikke kommer så godt frem, verken i media eller i sirkusenes egen fremstilling av tilværelsen (sistnevnte ikke overraskende).

Hva er det som gjør at folk finner glede i å se på dette? Gir det mening og glede for mennesker at en elefant setter seg på en krakk? Jeg kan forstå at folk før underholdningsindustriens inntog hadde behov for en virkelighetsflukt av denne typen; å bli presentert for et univers hvor alt var fantastisk og glitrende og morsomt var helt sikkert unikt og fascinerende. Men i dag..? Vi har da så mye filmer og spill med sprudlende effekter at det kan umulig være nødvendig å tvinge dyr til å bo i trange bur på den andre siden av jordkloden for å tilfredsstille vårt umettelige underholdningsbehov. Jeg håper så mange som mulig benytter anledningen til å la være å gå på sirkus!

Sunday, April 10, 2005

Kattebarbering

Jeg er for tiden hjemme på Radøy for å ta meg av min syke katt mens mine foreldre er bortreist. Katten har hvert år et kjempeproblem fordi pelsen hans klumper seg så fælt, og når han nå måtte til dyrlegen var det fordi min far hadde klippet hull i ham i et velment forsøk på å klippe bort en pelsklump. Jeg visste riktignok at katten hadde blitt barbert i samme slengen, så han skulle slippe klumpeproblemet fremover mot sommeren, men jeg var likevel ikke forberedt på synet som møtte meg. Jeg må innrømme at jeg hadde sett for meg en pent kortklippet katt, håndtert med klippemaskin heller enn barbermaskin, og gjerne noe jevnt klippet. Slik gjøres det altså ikke. Katten ser ut til å være likegyldig til sin nye frisyre. Heldigvis, siden mine foreldre allerede planlegger å gjøre barberingen til et fast vårrituale.

Friday, April 08, 2005

XmlSockets in Flash

XmlSockets in Flash provide a simple way to obtain a persistent connection with a server. However, the server must be aware of Flash's language in order for the communication to work. It appears that XmlSocket's onData()-function, the function used to receive data, won't trigger until some specific end-of-file (or stream or whatever) bytes have been received (a zero-byte). I created a simple test server in C#, and in order to make onData() trigger in Flash, the following had to be added to the string being sent:

char EOF = (char) 0x00;
Thus, the server sends:
binaryWriter.Write(stringIWantedToSend + EOF);

En blogg kan være et godt verktøy for en som i litt for stor grad glemmer de små og store tingene som utgjør livet. Dette er min reserve- hukommelse.