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");
}
}
}
浙公网安备 33010602011771号