allgemeine klasse zur verbindung mit amfphp
(benötigt
Macromedia Flash Remoting for Flash MX 2004 ActionScript 2.0)
PHP-Code:
import mx.remoting.Service;
import mx.rpc.RelayResponder;
class business.ServiceLocator
{
private var gatewayUrl:String;
private var responseHandler:RelayResponder;
private var serviceDirectory:Array;
private var serviceCache:Array;
public function ServiceLocator ( responseHandler:RelayResponder )
{
this.responseHandler = responseHandler;
this.serviceDirectory = new Array ();
this.serviceCache = new Array ();
this.gatewayUrl = "http://www.***.de/php/gateway.php";
this.initialiseServices ();
}
public function getService ( serviceName:String ):Service
{
if ( this.serviceExists ( serviceName ) )
{
return this.getServiceInstance ( serviceName );
}
}
private function initialiseServices ():Void
{
this.addService ( "Sin", "initialSinService" );
}
private function addService ( serviceName:String, servicePath:String ):Void
{
this.serviceDirectory[serviceName] = servicePath;
}
private function serviceExists ( serviceName:String ):Boolean
{
return this.getServicePath ( serviceName ) != null;
}
private function getServicePath ( serviceName:String ):String
{
return this.serviceDirectory[serviceName];
}
private function getServiceInstance ( serviceName:String ):Service
{
var service:Service = this.serviceCache[serviceName];
var serviceInstantiated:Boolean = (service != null);
if ( !serviceInstantiated )
{
service = this.getServiceConnection ( serviceName );
this.serviceCache[serviceName] = service;
}
return service;
}
private function getServiceConnection ( serviceName:String ):Service
{
if (this[serviceName] == undefined)
{
this[serviceName] = new Service( this.gatewayUrl, null, this.getServicePath( serviceName ), null, this.responseHandler );
}
return this[serviceName];
}
}
beispiel:
PHP-Code:
import business.Delegate;
import commands.Command;
import view.Popup;
import view.Container;
import mx.rpc.ResultEvent;
import mx.rpc.FaultEvent;
import mx.rpc.RelayResponder;
class commands.LoadProjectsCommand extends RelayResponder implements Command
{
private var delegate:Delegate
public function LoadProjectsCommand()
{
this.delegate = new Delegate( this );
}
public function execute():Void
{
delegate.loadProjects();
}
private function onResult( res:ResultEvent ):Void
{
var result:Object = res.result;
var count:Number = result.length;
var obj:Array = new Array();
for (var i:Number = 0; i < count; i++)
{
obj[i] = {image:result.getItemAt ( i ).image, text:result.getItemAt ( i ).text}
}
Container.setProjects( obj );
}
private function onFault( fault:FaultEvent ):Void
{
Popup.alert( fault.fault.faultstring );
}
}
PHP-Code:
import business.ServiceLocator;
import mx.remoting.Service;
import mx.rpc.RelayResponder;
class business.Delegate
{
private var service:Service;
private var responseHandler:RelayResponder;
public function Delegate( responseHandler:RelayResponder )
{
this.responseHandler = responseHandler;
var serviceLocator:ServiceLocator = new ServiceLocator( this.responseHandler );
service = serviceLocator.getService( "Sin" );
}
public function loadProjects ():Void
{
service.loadProjects ();
}
}
beste grüße rickenbacke