Java for Flash 网页游戏开发笔记

 IDE:JDK1.6,MyEclispe5.5,Tomcat6.0,Flash 8,Flash Remoting MX.

    原理:Flash Remoting MX,是一个服务,可以发送HttpRequest,使Flash与JAVA通信成为可能,原理类似于AJAX,只不过AJAX是通过创建浏览器对象来发送Http请求,而Flash是通过Adobe提供的Flash Remoting MX,这个服务来发送Http请求.

    参考书籍:<<Java for Flash 动态网站开发手札>>,刚买的,看了3天发现看完了,现在变成一本工具书。这就是打通任督二脉的好处,再学其他武功都会很快。

    技术:书上讲的是用Flash Remoting MX。发送请求给Servlet或JSP,连接数据库用JDBC。但是在Servlet或JSP上写代码很恶心,而且因为一上手就是Hibernate,所以JDBC可以说一点不会,因此为了MVC和自己方便,决定用Struts1+Hibernate代替Servlet+JDBC

,校内的架子一直在用.do,可以开心农场却是拿PHP做的,真是悲哀!~~~

因为Struts的Action其实就是一种特殊的Servlet或者说就是Servlet所以说用Flash Remoting MX发送请求给Action是完全可行的。进入到controller这层想干什么就是自己的自由了。

    发现flash语言和JavaScript语言十分相近,因此有JS基础的人很快就可以上手flash编程。

目前HelloWorld已经写完了,正在模拟种菜偷菜的那个。

一开始没想明白如何实现动态刷新实现让菜长高,最简单的方法是new Date();用当前时间和长大时间比较,如果超过则长大,不超过继续。比较,但是使用简单的方法

while(flag)

{

if(new Date >= d1)

{

  flag = false;

}

}

  一运行估计就死机了,new了太多Date对象,估计会益出。

后来又想到JAVA定时起Timer和TimeTask,请求以后开始定时,new一个对象以后开始计时,但是又想不好在定时的时候如何动态改变定时的时间,并且一个用户一个Timer服务器还是会爆,最后想到用AJAX的时候曾经使用过JS的定时器,所以估计Flash里也应该有,百度一下发现果然有,于是有了下列的实现逻辑。

1.var:d1 Date = new Date();//当前时间

2.var:d2 Date//时间2,服务器返回的张大时间

3.发送请求给Struts的.do,传递个编号过去,去数据库里查该编号对应的成长时间,返回一个对象,这里我返回的是ActionForm对象,不知道为什么我的自定义对象不好使,因为无法解析类型,我想在flash里import我的自定义类应该可以解决,但是没有尝试,因为ActionForm对象不用import   struts的任何包就可以在flash里解析(很奇怪),所以我把返回时间封装在返回的form对象里,以后可以根据需要封装更多的东西回来

4.d2 = 服务器返回时间

5.开启定时器,1秒的时间间隔,操作是比较d1与d2,如果没到时间,d1.setTime(d1.getTime()+1*1000);//单位是毫秒,所以*1000,就是每隔1秒钟让现在的时间+1秒,这样因为d1就是一个对象,所以通过它的get,set方法来改变值我想应该是在d1对象的内存空间内进行的,应该不会开辟新的内存空间才对,这样就解决了不断new Date,的尴尬局面产生,且定时器是在客户端的flash里,服务器不会有任何的负担

6.d1>d2,停止定时器,播放植物长大的flash片段,同时开始新一论循环,进入下一个成长阶段从第3步开始了

到此实现了植物的长大功能,和长大后动态刷新功能,误差不超过5秒。我自己的机器上跑是3秒左右的误差,不过我机器很烂,512内存,单核赛阳2.0CPU,同时开MyEclipes,flash8和tomcat时,经常出现卡死机的状态。服务器的话误差应该会更小1点,不过又受到网络的影响,但是农场的植物一般长大需要N个小时,好象长的需要24小时,所以我想几秒的误差大家应该还是可以接受的。

以上是本人无聊时自己看书和做例子的心得!!!

猜你喜欢

转载自blog.csdn.net/lwb314/article/details/4363344