openAMF的使用

Java和flash通信有openamf ,blazeDS,刚听一位前辈说blazeDs比较好,这个我第二份工作就是用这个做企业级开发的,现在换做游戏了,感觉比较重量级。

于是研究了下openamf。

myeclipse 8.5 + tomcat7 + openamf

myeclipse 8.5 + tomcat7 有个要注意的地方

windows-preferences-servers-Tomcat - 6.x -paths -Append to classpath 加上这个jar

apache-tomcat-7.0.23\bin\tomcat-juli.jar

即可。

新建一个java web工程名字叫openamftest 扔到tomcat/webapps下 把自带的openamf例子下的web-inf/lib下的jar拷到自己的工程web-inf/lib下

web.xml 配置

  <servlet>
  <servlet-name>DefaultGateway</servlet-name>
  <servlet-class>org.openamf.DefaultGateway</servlet-class>
  <init-param>
   <param-name>OPENAMF_CONFIG</param-name>
   <param-value>/WEB-INF/openamf-config.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>DefaultGateway</servlet-name>
  <url-pattern>/gateway</url-pattern>
 </servlet-mapping>

java 文件:

public class Test {

 public String say(String str)
 {
  return str;
 }
}

as3文件:

package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.net.NetConnection;
import flash.net.Responder;
import flash.text.TextField;

public class OpenAmf extends Sprite
{

public var txt:String="";
private var init:Boolean;
public var tf:TextField;
public var nc:NetConnection ;
public function OpenAmf()
{
initDisplay();
}
public function initDisplay():void
{
tf = new TextField();
tf.x=100;
tf.y=100;
tf.backgroundColor=0xffffff;
tf.width=300;
tf.height=200;
this.addChild(tf);

stage.addEventListener(MouseEvent.CLICK,click);
}
private function click(event:MouseEvent ):void{
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,handler);
nc.client = nc;
nc.objectEncoding = flash.net.ObjectEncoding.AMF3;
nc.connect("http://localhost:8080/openamftest/gateway");
tf.appendText("发送Say--事件"+"\n");
nc.call("Test.Say",new Responder(SuccResult,OtherStatus),"wang_cheng_click");

tf.appendText("发完了 \n");
}

private function handler(evt:NetStatusEvent):void
{
trace(evt.info.code,evt.info.level);
}
private function SuccResult(re:Object) :void{
tf.text=re+"\n" + tf.text;
tf.appendText("成功了 \n");
}
private function OtherStatus(re:Object):void{
tf.appendText("出错了 \n");
}
}
}


 

posted on 2012-01-19 16:16  防空洞  阅读(747)  评论(0)    收藏  举报

导航