AMFPHP remote met FAME

Folkert

27 november 2006

Dit artikel gaat ervan uit dat je Actionscript Met Eclipse met flashout hebt draaien. Omdat er op de OSFlash maillijst(engels) wat vragen waren over remoting starten met FAME of met de MTASC Compiler, is dit artikel geschreven.

Let op:
Voor je start, zorg dat je webserver met amfphp beta 1.0 locaal draait en je eclipse omgeving klaar is voor FAME.

Welnu, er zijn een paar veranderingen nodig in de MM classes voor remoting. De stappen die nodig zijn om het te laten werken zonder error meldingen zijn de volgende.

Stap 1

Open de ‘NetServiceProxy.as’ uit je Macromedia calles map/mx/remoting/ en maakt de volgende veranderingen.

  • Regel 60: verander ‘client’ in ‘this.client’
  • Regel 72: verander ‘serviceName’ in ‘this.servicename’
  • Regel 73: verander ‘nc’ in ‘this.nc’ bij beide , de nc.call en het argument nc

Sluit de file.

Stap 2

Open ‘RecordSet.as’ , uit dezelfde remoting map. Ga naar regel 404 en verander ‘return’ in ‘return null’.

Stap 3

Open nu Eclipse en maak jezelf een Actionscript project. Zet je classpath naar je package folder (in mijn geval de ‘src’ map).

Stap 4

We doen even de standaard helloWorld class om te testen. Deze class bevat de ge-assimileerde _root van Aral Balkan en bevat een main entry punt waarmee je de applicatie bouwt.

Actionscript
	/*
	AMF 'hello World' voorbeeld
	actionscript 2 versie
	purpose: Voorbeeld file AMF 1.0 and FAME
	file: HelloWorld.as
	*/

	//import remoting spul
	

	import mx.remoting.Service;
	import mx.remoting.PendingCall;
	//dan de Responder interface
	import mx.rpc.Responder;
	import mx.rpc.RelayResponder;

	class com.nederflash.HelloWorld extends MovieClip
	{

	        //on stage
	        private var recieved_txt:TextField;

	        private var addEventListener:Function;
	        //vars die de gateway en de service vasthouden

	        var service:Service;
	        var gatewayURL:String;

	        private function HelloWorld( target ) {
	                Flashout.log("HelloWorld is gestart");
	                // Assimilate the target like Aral did before see http://flashant.org

	                target.__proto__ = this.__proto__;
	                target.__constructor__ = HelloWorld;
	                this = target;

	                Flashout.log("HelloWorld onLoad called");

	                //set je correcte url and create the service

	                gatewayURL = "http://localhost/services/gateway.php";
	                service = new Service ( gatewayURL, null , "helloWorld", null, null );
	                doSayHello();
	        }
	        //the service sayHello

	        public function doSayHello(){
	                Flashout.log("doSayHellO gestart");
	                var pendingCall:PendingCall = service.sayHello();
	                pendingCall.responder = new RelayResponder( this, "onResultOperation", "onStatusOperation");
	                Flashout.log( "pendingCall = "  pendingCall );
	        }
	        /*
	        -events
	        */

	        public function onResultOperation(evtObj:Object){
	                Flashout.log( "INFO::onResultOperation->evtObj.result :"   evtObj.result );
	                createTextField( "recieved_txt", 10000, 10, 10, 100, 20 );
	                recieved_txt.text = evtObj.result;
	        }
	        public function onStatusOperation(evtObj:Object){
	                Flashout.log( "INFO::onStatus->status operation geroepen" );
	        }

	        //hoofd ingang main

	        public static function main ( )
	        {
	                var helloWorld:HelloWorld = new HelloWorld( _root );
	        }
	}

Stap 5

Maak zelf een nieuwe file en noem deze helloWorld.flashout.

Let op:
Je dient in het flashout venster nog de paden te zetten naar je swf en naar je ‘main’ class. Om dat te doen kijk je in het flashoutvenster onderaan bij de tabs. Daar vind je ‘Compilation status/preferences. wanneer je geen lege swf hebt neergezet, gebruik dan bij de MTASC ‘additional’ tab het commando (in het flashoutScreen bij Compilation status/preferences).

	-header 300:300:20
	

Je geeft daarmee aan dat de swf nog gemaakt moet worden met de maten 300 breed en 300 hoog met een framerate van 20.

Stap 6

Geniet van een Open source remoting swf an het drukken van Compile.