|
关于flash+java
首先,我是个新手,写的东西也是面向一些对as2有点了解,刚刚接触flash后台连接的新手,有些东西写的有点太细了,老手们看了不要笑话,太仔细出错的概率也高,帮忙找找错误,修改一下,谢谢! 1,需要tomcat5.5,下载地址: http://tomcat.apache.org/download-55.cgi#5.5.15 点击里面的Windows Executable即可下载安装; 2,需要jdk1.5支持,下载地址: https://sdlc1b.sun.com/ECom/EComActionServlet;jsessionid=DBFB8FAB9FE47740385610A2FB5D7AD0 3,需要openamf,下载地址: http://prdownloads.sourceforge.net/openamf/openamf-1.0RC11-examples.zip?download 4,需要flash remoting components for flash8 actionscript2.0,就是那个remoting组件啦,下载地址: http://www.macromedia.com/software/flashremoting/downloads/components/#flr_fl8 以上都是官方网址,都是免费的 最后,需要flash8(昏特,这还用说*_*) 然后就是安装了,我的顺序是:remoting组件 ->jdk ->tomcat ->openamf,这里面remoting组件随便什么时候装的,后面3个的顺序一定要那样的,最后那个openamf是个.zip文件,解压缩后会得到一个openamf.war(这时应该已经装了tomcat了),把那个.war文件copy到tomcat5.5/webapps下面,启动tomcat 5.5,webapps下就会多了个文件夹openamf(如果安装结尾选择了自动运行tomcat,那么只要把.war拷贝到webapps下机会自动生成openamf文件夹了),openamf就算OK了,简单吧 下面就开始试验一下吧:
首先是java,也就是服务器端 (如果是新手,不要觉得java神秘,java写起来和as基本上差不多,java的设计理念就是要设计出让人觉得容易写的语言,嘿嘿,我也是个新手:)),java的任务就是接收flash传来的消息,然后回复一个消息。 代码如下:
public class TestBean{ public String getMessage(){ return "Hello World!!"; } }
绝对简单啊,就是定义了一个方法getMessage,返回一个String,用记事本保存为TestBean.java文件。 如果有人不知道java怎么个弄法,那我就来充一回行家,如果知道的,直接跳到“#”处。 安装jdk后去看一下你的jdk装哪儿了(如果装的时候只顾着按next没注意装哪儿,那多半在c:\program files\java\j2dk50了,我是装在d:\java\jdk)打开里面的一个bin文件夹,然后,copy下这个地址,我的就是D:\java\jdk\bin了。右击“我的电脑”,选属性 ->高级 ->环境变量,出来个对话框,下面一个是系统变量,双击里面的Path,然后在变量值(v)的最后面加上一个分号,后面是你的bin的地址,然后,一路按确定。 这时,你就可以编译.java了,步骤简单说一下: 假设你的.java放在D:\myJava下面了 开始菜单 ->运行 ->cmd,打开了dos,然后输入D:,回车;输入:cd myJava,回车;再输入:javac TestBean.java,回车。这时,稍微等一下,等dos有了反应,去D:\myJava看看,有一个TestBean.class文件,我们要的就是它了 #把编译好的.class文件copy到Tomcat 5.5\webapps\openamf\WEB-INF\classes下面,重启一下tomcat,服务器端的工作OK了 这里注意,.class文件有任何改动,都要停止tomcat再启动的 接下来是flash,也就是客户端 新建2个文件:connectTomcat.fla、connectTomcat.as,这里我强烈建议as和fla文件分开,fla里面只写一句代码,写在主时间轴的第一帧上:#include "connectTomcat.as" 这样fla和as完全分开,便于管理和协作。 接下类打开connectTomcat.as,输入下列代码:
import mx.remoting.Service; import mx.remoting.PendingCall; import mx.rpc.RelayResponder; import mx.rpc.FaultEvent; import mx.rpc.ResultEvent; //新建一个Service对象:flashtestService,用来连接咱们那个TestBean.class的 var flashtestService:Service = new Service("http://localhost:8080/openamf/gateway", null, "TestBean", null, null); var pc:PendingCall = flashtestService.getMessage(); //下面这一句的后两个参数,就是我们要调用的getMessage方法,分别加上_Result和_Fault pc.responder = new RelayResponder(this, "getMessage_Result", "getMessage_Fault"); //一切顺利就运行getMessage_Result(),里面的参数re就是返回的内容,re.result就是它的值,在我们这个例子里,就是"Hello World!!"这个字符串,不顺利就运行getMessage_Fault。 function getMessage_Result(re:ResultEvent):Void { trace(re.result); } function getMessage_Fault(fe:FaultEvent):Void { trace("Pity!"); }
保存.as文件,到fla里调试,应该能看到弹出对话框里显示着: Hello World!! 我自己学的时候主要得益于下面2篇文章: http://www.flashempire.com/school/tutorview.php?id=479 http://www.flashempire.com/school/tutorview.php?id=481 http://blog.xuite.net/jameschih/java/5313683 嗯!明明是3个地址嘛!呵呵,前2个是连着的,里面具体讲述了flash+remoting+jrun4的用法,但remoting和jrun都是要钱的啊,盗版的用着总不如正版的舒服嘛,第3个是关于flash+openamf+tomcat的,但对于新手来说可能还不够详细。 如果对我写的教程有任何意见,欢迎回帖,我会尽快改的 写这个教程的目的其实是为了问一个问题,我怕别人不知道我问什么,就写的过分详细,后来干脆改成教程得了,问题来了 我用的flash+openamf+tomcat5.5 我写了个java,可以生成一个xml文档并存储在.class同目录下,我用jcreator做的,在jcreator里运行一切正常,但到flash里尝试就歇菜了,flash端可以接收return的address,却没有生成xml,我就不懂了,是不是服务器限制什么的啊,这里肯定有高手,帮帮我吧! 我的java代码如下:
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.*; import org.apache.crimson.tree.XmlDocument; public class XMLWrite{ private String address; public String writeXML(String outFile){ address = outFile; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { System.err.println(pce); System.exit(1); } Document doc = null; doc = db.newDocument(); Element root = doc.createElement("root"); doc.appendChild(root); for(int i=0; i<10; i++){ Element sort = doc.createElement("sort"); sort.setAttribute("folder","ttttt"); root.appendChild(sort); } try{FileOutputStream outStream = new FileOutputStream(address); OutputStreamWriter outWriter = new OutputStreamWriter(outStream); ((XmlDocument) doc).write(outWriter, "GB2312"); outWriter.close(); outStream.close(); }catch(FileNotFoundException e){ System.err.println(e); System.exit(1); }catch(IOException e){ System.err.println(e); System.exit(1); } return address; } public static void main(String[] args){ XMLWrite xw=new XMLWrite(); String s=xw.writeXML("xxx.xml"); System.out.println(s); } }
我教程也发了,请各位高手帮帮忙啊!谢谢!
|