flash外部类,可以手机写java代码码吗?

支持Flash开发的Java API:FLASH4J 3.0作者:课课家教育&http://www.kokojia.com点击数:14505发布时间: 12:16:29
  Emitrom是一家专为企业定制软件开发服务的公司,最近发布了4j version 3.0,使用的是Apache开源许可。Flash4j
是一种 API(最初是对Apache Flex的封装),它为Java开发者提供了一种熟悉的方式来开发桌面或者移动设备上的Flash 应用。
  Flash开发通常使用ActionScript,这是一种脚本语言,对不习惯脚本语言的Java开发者而言,可能不够友好(也有类似问题)。作为替代,Flash4j提供了完整的Java
API,类似于Swing、GWT和Wicket。
  Flash4j提供了完整齐全的Java类,包含如下几个方面:
  控件方面,如按钮、菜单、数据表格、列表和日期选择器等
  如、boxes和accordions等容器
  图表和图形等高级控件
  与Swing类似的事件系统
  在这个例子中,展示了使用Flash4j的几个例子和相关代码。
  有意思的是,尽管Flash4j明显是针对Flash运行时环境的,但Emitrom认为作为一种备选机制也很重要。因此,Flash4j能够智能检测Flash运行环境是否存在,允许开发者处理不支持Flash的各种设备。因而,根据运行环境编写一个有条件支持HTML
5的Flash4j应用是可能的。
  Flash4j也能够与以下框架整合:
  Apache Flex
  Starling Flash游戏引擎
  GreenSock Tweening library动画框架库
  Adobe Air平台
  Sencha GXT
  对Adobe
Air的支持也很重要,因为它允许Flash4j应用脱离浏览器在桌面上运行。因此,Emitron说使用一套Java代码编写的Flash4j应用,能够在桌面(通过Adobe
Air)、浏览器(通过Flash)和移动设备(通过GWT的HTML5)上运行。因为不需要移植,这使得开发跨平台应用(或游戏)更为容易。
标签:赞(18)踩(5)分享到:上一篇:下一篇:最新教程热门教程评论()您需要登录后才可以评论请[][]最新评论暂无评论~编程语言为你推荐推荐查看热门资讯热门图书java语言做后台程序,如何与flash做连接?互相传值?_百度知道
java语言做后台程序,如何与flash做连接?互相传值?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
你直接在后台添加FLash 的URL 就行了 但后台看是否有添加FLASH 连接地址的功能如果没有,那就只好改你的页面了
通过xml就可以了。在flash中定义xml,然后把数据传到java后台就行。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎样可以把flash添加到Java应用程序_百度知道
怎样可以把flash添加到Java应用程序
我在做一个java项目想在项目中添加flash让项目更养眼^-^请知道的好友们告诉我如何编写它的代码谢谢啦!!!!!!!!!1...
我在做一个java项目想在项目中添加flash让项目更养眼^-^ 请知道的好友们告诉我如何编写它的代码谢谢啦!!!!!!!!!1
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
<span class="wgt-replyer-all-uname
" data-href="https://zhidao.baidu.com/usercenter?uid=4a9e05e30326
<span class="wgt-replyer-all-card-name3 wgt-replyer-all-card-names" data-href="https://zhidao.baidu.com/usercenter?uid=4a9e05e30326
采纳数:55
获赞数:96
&SCRIPT language=JavaScript src=&css/xilan_banner_0621.js&&&/SCRIPT&&SCRIPT language=JavaScript src=&css/beijing.js& type=text/JavaScript&&/SCRIPT&&STYLE type=text/css&.txt12 { FONT-SIZE: 12 COLOR: #000000; LINE-HEIGHT: 130%; FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.rdate { FONT-SIZE: 14 COLOR: #999999; LINE-HEIGHT: 14 FONT-FAMILY: &Arial&; TEXT-DECORATION: none}.copyright { FONT-SIZE: 12 LINE-HEIGHT: 180%; FONT-FAMILY: &Arial&, &宋体&}.txt18 { FONT-WEIGHT: FONT-SIZE: 25 FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.wht12 { FONT-SIZE: 12 COLOR: # LINE-HEIGHT: 16 FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.blue12_:link { FONT-SIZE: 12 COLOR: #0000 FONT-FAMILY: &宋体&; TEXT-DECORATION: underline}.blue12_:visited { FONT-SIZE: 12 COLOR: #0000 FONT-FAMILY: &宋体&; TEXT-DECORATION: underline}.blue12_:hover { FONT-SIZE: 12 COLOR: #000000; FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.blue14_:link { FONT-SIZE: 14 COLOR: #0000 FONT-FAMILY: &宋体&; TEXT-DECORATION: underline}.blue14_:visited { FONT-SIZE: 14 COLOR: #0000 FONT-FAMILY: &宋体&; TEXT-DECORATION: underline}.blue14_:hover { FONT-SIZE: 14 COLOR: #ff0000; FONT-FAMILY: &宋体&; TEXT-DECORATION: underline}.day { FONT-WEIGHT: FONT-SIZE: 20 COLOR: #000000; LINE-HEIGHT: 120%; FONT-FAMILY: &Verdana&}.box { BORDER-RIGHT: # PADDING-RIGHT: 0 BORDER-TOP: # PADDING-LEFT: 0 PADDING-BOTTOM: 0 BORDER-LEFT: # WIDTH: 0 PADDING-TOP: 0 BORDER-BOTTOM: # HEIGHT: 0px}.p1 { FONT-SIZE: 16 COLOR: #000000; LINE-HEIGHT: 180%; FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.navy { BORDER-RIGHT: BORDER-TOP: FONT-SIZE: 12 BORDER-LEFT: COLOR: #003483; LINE-HEIGHT: 16 BORDER-BOTTOM: FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.formt { BORDER-RIGHT: # BORDER-TOP: # BORDER-LEFT: # BORDER-BOTTOM: # BACKGROUND-COLOR: #ffffff}.btn { FONT-SIZE: 9 COLOR: # LINE-HEIGHT: 10 FONT-FAMILY: &Arial&, &Helvetica&, &sans-serif&; BACKGROUND-COLOR: #003483; TEXT-DECORATION: none}.blue12 { FONT-SIZE: 12 COLOR: #0033 LINE-HEIGHT: 16 FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.sx { BORDER-RIGHT: # BORDER-TOP: #ffffff 0 BORDER-LEFT: # BORDER-BOTTOM: #px solid}.ddl { BORDER-RIGHT: #719ad9 1 BORDER-TOP: #ffffff 0 BORDER-LEFT: #719ad9 1 BORDER-BOTTOM: #ffffff 0px solid}.zz { FONT-SIZE: 12 COLOR: #000000; FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.heibian { BORDER-RIGHT: #adadad 1 BORDER-TOP: #adadad 1 BORDER-LEFT: #adadad 1 BORDER-BOTTOM: #adadad 1px solid}.1t12 { FONT-SIZE: 12 COLOR: # LINE-HEIGHT: 20 FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.lan14 { FONT-SIZE: 14 COLOR: #000066; LINE-HEIGHT: 130%; TEXT-DECORATION: none}.txt18 { FONT-WEIGHT: FONT-SIZE: 25 FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.p1 { FONT-SIZE: 16 COLOR: #000000; LINE-HEIGHT: 180%; FONT-FAMILY: &宋体&; TEXT-DECORATION: none}A:hover { TEXT-DECORATION: underline}.hei12 { FONT-SIZE: 12 COLOR: #000000; TEXT-DECORATION: none}.l12 { FONT-SIZE: 12 COLOR: #000066; FONT-FAMILY: &宋体&; TEXT-DECORATION: none}.lan12 { FONT-SIZE: 12 COLOR: #000066; TEXT-DECORATION: underline}.lan12:hover { FONT-SIZE: 12 COLOR: #000066; TEXT-DECORATION: none}.box { BORDER-RIGHT: #dedede 1 BORDER-TOP: #dedede 1 BORDER-LEFT: #dedede 1 BORDER-BOTTOM: #dedede 1px solid}TD { FONT-SIZE: 12 FONT-FAMILY: &宋体&; TEXT-DECORATION: none}&/STYLE&
&DIV align=center&
&OBJECT id=myPlayer height=326 width=320
classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6&
&PARAM NAME=&URL& VALUE=&css/第一次.mp3&&
&PARAM NAME=&rate& VALUE=&1&&
&PARAM NAME=&balance& VALUE=&0&&
&PARAM NAME=&defaultFrame& VALUE=&&&
&PARAM NAME=&playCount& VALUE=&1&&
&PARAM NAME=&autoStart& VALUE=&1&&
&PARAM NAME=&currentMarker& VALUE=&0&&
&PARAM NAME=&invokeURLs& VALUE=&-1&&
&PARAM NAME=&baseURL& VALUE=&&&
&PARAM NAME=&volume& VALUE=&50&&
&PARAM NAME=&mute& VALUE=&0&&
&PARAM NAME=&stretchToFit& VALUE=&1&&
&PARAM NAME=&windowlessVideo& VALUE=&0&&
&PARAM NAME=&enabled& VALUE=&-1&&
&PARAM NAME=&enableContextMenu& VALUE=&-1&&
&PARAM NAME=&fullScreen& VALUE=&0&
&&PARAM NAME=&SAMIStyle& VALUE=&&&
&PARAM NAME=&SAMILang& VALUE=&&&
&PARAM NAME=&SAMIFilename& VALUE=&&&
&PARAM NAME=&captioningID& VALUE=&&&
&/OBJECT& &/DIV&
&/body&&/html&&script &&/script&上面有个第一次歌曲路径那是你要改的东西 你只要把你要播放的资源路径拼那就行
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。技术交流请加QQ群:
Java+FlashWavRecorder实现网页录音并上传
最新版本请看这里:
肯定有需求要网页录音,而且要上传,这奇葩需求,
然后找到了FlashWavRecorder,
【原始版本】
在上面的地址下载zip解压之后,文件夹里面有个index.html,打开之后这效果:
2.录音权限
必须保证你的电脑有麦克风,也就是说台式机你得有耳麦,笔记本保证麦克风没有坏掉,
有麦克风的情况下,点击上面的红框内的按钮,然后选择允许,如下:
可能有的人会说我点了没反应,或者firebug报错啊,神,插上麦克风。。
之后你就可以试的录音了,自己研究吧,挺简单。
flash录音很好实现,比较难的是录音后直接上传录音文件到服务器,
FlashWavRecorder做到了,
看了下as源码,大概是js调用swf中的方法,
swf会把录音放到内存,然后编码,然后传到服务器,
服务器就可以保存了。
这个插件是好,对于用java程序员来说,as代码,php代码都是坑啊,
幸好as代码和java类似,还能看懂点,php以前也看过点。
【改装后版本】
在页面head中引入一下js和css:
&script type="text/javascript" src="${base}/js/_record/js/swfobject.js"&&/script&
&script type="text/javascript" src="${base}/js/_record/js/recorder.js"&&/script&
&script type="text/javascript" src="${base}/js/_record/js/main.js"&&/script&
&link rel="stylesheet" href="${base}/js/_record/style.css"&
当然前提要有jquery,这里就没有写了
精简了一些东西,重新布局了,代码:
&div class="qcontainer"&
&div id="recorder-audio" class="control_panel idle"&
&button class="record_button" onclick="FWRecorder.record('audio', 'audio.wav');" title="Record"&
&img src="${base}/js/_record/images/record.png" alt="Record" /&
&button class="stop_recording_button" onclick="FWRecorder.stopRecording('audio');" title="Stop Recording"&
&img src="${base}/js/_record/images/stop.png" alt="Stop Recording" /&
&button class="play_button" onclick="FWRecorder.playBack('audio');" title="Play"&
&img src="${base}/js/_record/images/play.png" alt="Play" /&
&button class="pause_playing_button" onclick="FWRecorder.pausePlayBack('audio');" title="Pause Playing"&
&img src="${base}/js/_record/images/pause.png" alt="Pause Playing" /&
&button class="stop_playing_button" onclick="FWRecorder.stopPlayBack();" title="Stop Playing"&
&img src="${base}/js/_record/images/stop.png" alt="Stop Playing" /&
&div class="level"&&/div&
&div class="details"&
&button class="show_level" onclick="FWRecorder.observeLevel();"&显示声波&/button&
&button class="hide_level" onclick="FWRecorder.stopObservingLevel();" style="display:"&隐藏声波&/button&
&button class="show_settings" onclick="microphonePermission()"&麦克风权限&/button&
&span id="save_button" style="display:inline-"&
&span id="flashcontent"&
&p&您的浏览器必须支持Javascript,而且安装了Flash播放器!&/p&
&div id="status"&录音状态。。。&/div&
&div&录音时长:&span id="duration"&&/span&&/div&
&div&上传状态:&span id="upload_status"&&/span&&/div&
&input type="hidden" id="qrecordId"/&
&form id="uploadForm" name="uploadForm" action="${base}/record/upload"&
&input name="authenticity_token" value="xxxxx" type="hidden"&
&input name="upload_file[parent_id]" value="1" type="hidden"&
&input name="format" value="json" type="hidden"&
4.后台代码
使用的springmvc(这个没啥关系),和apache的fileupload组件,代码:
package com.bfsuol.common.
import java.io.F
import java.util.I
import org.apache.commons.fileupload.FileI
import org.apache.commons.fileupload.disk.DiskFileItemF
import org.apache.commons.fileupload.servlet.ServletFileU
import org.springframework.beans.factory.annotation.A
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.ResponseB
import com.bfsuolcomponents.file.entity.FileM
import com.bfsuolcomponents.file.service.FileManagerS
import com.bfsuolframework.core.controller.SpringControllerS
import com.bfsuolframework.core.utils.DateTimeU
import com.bfsuolframework.core.utils.FileU
* 录音以及上传controller
* @author qiaowenbin
@Controller
@RequestMapping("/record")
public class RecordController extends SpringControllerSupport{
@Autowired
private FileManagerService fileManagerS
@RequestMapping("/upload")
public @ResponseBody String upload() throws Exception{
Iterator&FileItem& iter = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(getRequest()).iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if(!item.isFormField()){
id = processUploadedFile(item);
return "{\"saved\": 1,\"id\": "+id+"}";
private Long processUploadedFile(FileItem item) throws Exception{
String uploadPath = FileUtils.getUploadRealPath("files/records") + FileUtils.getDatePath()+"/";
FileUtils.createFolder(uploadPath);
String fileFullPath = getFileValidName(uploadPath, item.getName(), true, true);
item.write(new File(fileFullPath));
FileManager fileManager = new FileManager();
fileManager.setFilePath(fileFullPath);
fileManager.setUrl(FileUtils.realPath2Path(fileFullPath));
fileManager.setFileRealname(FileUtils.getFileName(fileFullPath));
fileManager.setFileTitle(item.getName());
return fileManagerService.save(fileManager);
private String getFileValidName(String filePath, String fileName,boolean format, boolean overwrite ){
String fileValidN
if(format){
String fileExt = FileUtils.getFileExt(fileName);
fileValidName =
filePath + DateTimeUtils.getCurrentDateTimeString("yyyyMMddHHmmss") + (fileExt==null?"":"."+fileExt);
fileValidName =
filePath + fileN
if( !overwrite ){
fileValidName = FileUtils.getValidFileName(fileValidName);
return fileValidN
大概的意思就是上传文件,将文件相关信息保存到数据库,返回保存后的id,
里面有些代码是没有用的,你可以自己修改。
【页面多次调用】
怎么会有这需求,
解决办法,每次都弹出来就好了,
可以自己封装一个方法,弹出后录音上传完毕后返回id。
原始文件有修改了一些js和页面内容,打个zip包,
有需要的可以下载。
zip只打包了前端的,后台摘出来太麻烦了,自己看上面的代码吧,
index.html需要替换为上面的页面。
使用FlashWavRecorder实现浏览器录制wav音频和上传音频文件,兼容IE8以上浏览器
java实现录音并保存到本地文件
java实现录音功能
Java录音与播放
java实现一个录音播放的功能
网页上面嵌入录音插件,可以录音,播放
Html5网页录音,js录音mp3
没有更多推荐了,flash与java交互数据
//在flash的按钮事件中写这段代码
on (press) {
//声明一个LoadVars对象用于在 Flash 应用程序和服务器之间传输变量
var sendRequestData:LoadVars = new LoadVars();
//在创建一个对象用来接受返回的数据 这个对象可以是LoadVars 当然也可以是XML
var xmlobject:XML = new XML();
//发送的变量
//count为变量名称,3为该变量的值
sendRequestData.count = "3";
//将变量从 LoadVars 对象发布到 URL,并将服务器的响应下载到目标对象
//如果修改web.xml用下面连接,这个是链接到servelet中的
//如果链接struts或者任何web层的框架原理是一样的
sendRequestData.sendAndLoad("", xmlobject, "POST");
xmlobject.onLoad = function(success) {
//xmlobject.toString()是通过java代码返回的值
count=xmlobject.toString();
//在Java代码中得到上面的数据是这样的
request.getParameter("变量名称")
flex java交互常用的三种方式
actionscript(flash)和java后台的数据交互!
java做服务端,FLASH做客户端交互总结
简单的实现 Js和java交互
没有更多推荐了,

我要回帖

更多关于 java入职写不出代码 的文章

 

随机推荐