- 浏览: 3502859 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
关于编写viewer,关键在于使用ReportEngine API,这个在birt官方文档 上有很详细的描述。 这里将几个主要环节总结一下:
- 启动ReportEngine
这里需要注意启动ReportEngine的开销问题和图片链的协议的问题。使用 IReportEngineFactory比每次new一个出来性能方面要好很多。使用HTMLEmitterConfig可以使得生成的HTML报表中 的图片的src指向一个web资源而非file资源。public IReportEngine getEngine() ... {
try ... {
if (platformContext == null ) ... {
platformContext = new PlatformServletContext(servletContext);
}
engineConfig = new EngineConfig();
engineConfig.setEngineHome(
servletContext.getRealPath( " /WEB-INF/platform/ " ));
// 要求ENGINE HOME 位于WEB-INF/Platform
engineConfig.setPlatformContext(platformContext);
// This call sets the Log directory name and level
engineConfig.setLogConfig(getLogDir(), Level.FINE);
// 设置Emitter,渲染HTML的时候,image的地址是HTTP协议而不是File协议
HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig( );
emitterConfig.setActionHandler( new HTMLActionHandler());
HTMLServerImageHandler imageHandler = new HTMLServerImageHandler();
emitterConfig.setImageHandler(imageHandler);
engineConfig.getEmitterConfigs().put( " html " , emitterConfig);
// 设置日志level
engineConfig.setLogConfig(getLogDir(), Level.WARNING);
// 启动Platform,创建ReportEngine
Platform.startup(engineConfig);
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
engine = factory.createReportEngine(engineConfig);
engine.changeLogLevel(Level.WARNING);
log.debug( " A new engine startup. " );
} catch (BirtException e) ... {
e.printStackTrace();
}
return engine;
} - 运行报表
我理解为编译报表文件。BIRT在渲染报表之前,要将报表编译为.rptdocument,再根据这个文件将报表渲染为HTML格式或PDF格式。编译报表使用IRunTask:protected void run(String rptDesign) ... {
assert (context != null );
IReportEngine engine = context.getEngine();
// Open a report design
IReportRunnable design = null ;
try ... {
design = engine.openReportDesign(context
.getFullRptDesignFilename(rptDesign));
// Create task to run the report - use the task to
// execute the report and save to disk.
IRunTask task = engine.createRunTask(design);
String doc = context.getFullRptDocumentFilename(rptDesign);
// run the report and destroy the engine
task.run(doc);
log.debug( " save rpt design to " + doc);
task.close();
} catch (EngineException e) ... {
e.printStackTrace();
}
} - 渲染报表
BIRT支持HTML格式和PDF格式,这两种报表生成的过程相同,只是设置不同的RenderContext和RenderOptions。我们把相同的部分提取为父类的公共方法,不同的部分留给子类实现:IReportDocument iReportDocument = engine.openReportDocument(docFilename);
// Create Render Task
IRenderTask task = engine.createRenderTask(iReportDocument);
task.addScriptableJavaObject( " jsBirtObject " ,
getScriptableObject(scriptObj));
if (params != null && ! params.isEmpty()) ... {
task.setParameterValues(params);
}
setRenderContext(task); // 设置Render Context,具体由子类实现
setRenderOptions(task, out); // 设置Render Options,具体由子类实现
task.render();
task.close();
} catch (EngineException e) ... {
e.printStackTrace();
} finally ... {
engine.shutdown();
} - 渲染PDF和HTML报表
- PDF/** */ /**
* @see AbstractBirtReportParser#setRenderContext(IRenderTask)
*/
@Override
protected void setRenderContext(IRenderTask task) ... {
PDFRenderContext renderContext = new PDFRenderContext();
renderContext.setEmbededFont( true );
HashMap contextMap = new HashMap();
contextMap.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT, renderContext);
task.setAppContext( contextMap );
}
/** */ /**
* @see AbstractBirtReportParser#setRenderOptions(IRenderTask, OutputStream)
*/
@Override
protected void setRenderOptions(IRenderTask task, OutputStream out) ... {
RenderOptionBase options = new RenderOptionBase();
options.setOutputStream(out);
options.setOutputFormat(RenderOptionBase.OUTPUT_FORMAT_PDF);
task.setRenderOption(options);
} - HTML
我们要生成一个HTML的一部分,而非包含<html/>标记的完整的HTML文档/** */ /**
* @see AbstractBirtReportParser#setRenderContext(IRenderTask)
*/
@Override
protected void setRenderContext(IRenderTask task) ... {
HTMLRenderContext renderContext = new HTMLRenderContext();
renderContext.setBaseURL(context.getBaseURL());
// You must define HTMLServerImageHandler to use a URL
renderContext.setBaseImageURL(context.getBaseImageURL());
// renderContext.setImageDirectory("myimages");
renderContext.setImageDirectory(context.getImageDirectory());
renderContext.setSupportedImageFormats( " JPG;PNG " );
HashMap contextMap = new HashMap();
contextMap.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext);
task.setAppContext( contextMap );
}
/** */ /**
* @see AbstractBirtReportParser#setRenderOptions(oIRenderTask, OutputStream)
*/
@Override
protected void setRenderOptions(IRenderTask task, OutputStream out) ... {
HTMLRenderOption options = new HTMLRenderOption();
options.setOutputStream(out);
options.setEmbeddable( true );
task.setRenderOption(options);
}
- PDF
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74151在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3759原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23494Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2134FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5524我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2346WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1565Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2121终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14841大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1711charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22625Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4884来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2375本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8699一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2906近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3702目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2542Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2100由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 3005安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1854本文介绍物理地址扩展 ...
相关推荐
FlappyBird的基本设计包括角色(小鸟)的移动、管道的生成与移动、碰撞检测和得分机制。在Java环境下,我们可以利用面向对象编程的思想,将游戏元素如小鸟、管道等设计为独立的类,通过实例化这些类来创建游戏世界。...
开发人员需要设计并实现相应的数字逻辑电路,使得N4开发板能够正确地生成并传输VGA信号,以在屏幕上实时渲染Flappy Bird游戏。 声音传感器是另一个重要的硬件组件,它能检测到环境中的音频信号,并将其转化为数字...
《基于Fly Bi Ego1开发板的FPGA小鸟游戏实现——深入解析Vivado技术》 在当前的数字系统设计领域,FPGA(Field-Programmable Gate Array)因其灵活性和高速性能,被广泛应用于各种嵌入式系统,尤其是游戏开发。本...
在这个项目中,Unity被用来创建Flappy Bird的游戏环境,包括背景、管道、角色等元素的渲染和动画效果。 源码中主要涉及以下几个关键知识点: 1. **游戏对象和组件**:在Unity中,游戏世界由各种Game Objects组成,...
这篇文档将深入解析《Android应用源码之FlappyBird像素鸟Unity+cocos2dx项目》这一资源包,它是一个适用于毕业设计的学习示例,旨在帮助学生掌握Android应用开发的关键技术。我们将围绕Android、Unity和cocos2dx这三...
在Flappy Bird的实现中,Phaser.js使得游戏逻辑编写变得简单,比如定义鸟的跳跃动作、管道的生成和移动、以及得分系统等。同时,Phaser.js还提供了调试工具和优化机制,帮助开发者优化性能,确保游戏在不同设备上...
压缩包中的"不死鸟分析文档.pdf"是对Flappy Bird游戏设计和实现的详细解析,包括游戏规则、核心算法和优化策略,对于理解源码有极大的帮助。"javaapk.com_000X.png"是一系列截图,可能用于展示游戏界面或关键流程,...
在这个“微信小程序源码_富文本解析,折线图,MD5,bluebird.zip”压缩包中,包含了一些核心的开发组件和技术的示例代码,下面将对这些知识点进行详细解释。 1. 富文本解析:在微信小程序中,处理富文本内容是常见的...
开发者通过`<canvas>`标签在HTML文档中定义画布,并通过JavaScript的`canvas.getContext('2d')`获取2D渲染上下文,进而进行绘制、填充、描边等操作。 二、JavaScript基础 1. 事件处理:游戏的交互主要依赖...
1. **PDF渲染选项**:讲解如何配置BIRT以生成高质量、多页或单页、带有水印和安全设置的PDF报告。 2. **页面布局和样式**:指导如何设计PDF报表的版式,包括字体、颜色、边距、页眉和页脚等。 3. **图表和图像**:...
【标题】"flappy_bird" 是一个针对移动设备应用程序开发课程的短期任务,它以经典游戏Flappy Bird为蓝本,旨在让学生实践并掌握Java编程语言和Android应用开发技术。这个项目通常会涵盖游戏的基本逻辑、用户界面设计...
这些资源涵盖了引擎的基础使用方法、高级渲染技术、蓝图视觉脚本语言等内容。通过学习Unreal Engine,开发者能够掌握创建高质量游戏所需的关键技能。 ##### 3. **在线课程平台** - **Coursera**:Coursera汇集了...
`render()`方法是我们更新游戏状态和绘制画面的地方,这里将实现Flappy Bird的基本逻辑,包括鸟的飞行、管道的生成与移动、碰撞检测以及分数计算。 游戏对象的表示是通过精灵(Sprites)和纹理(Textures)来完成的...
3.3final是它的一个稳定版本,提供了丰富的图形渲染、动画、物理模拟和音频处理等功能。 2. **Flappy Bird核心机制**:Flappy Bird游戏的核心在于角色的飞行控制和管道穿越。玩家通过点击屏幕使小鸟上下飞行,避开...
在压缩包文件名称"threejs-bird-master"中,"master"通常表示这是项目的主分支或最新版本,意味着我们可以期待找到项目的源代码、资源文件和其他相关文档。 深入讨论知识点: 1. **Three.js**:Three.js是...
HTML到PDF转换是一种常见的需求,特别是在网页打印、文档保存或跨平台分享时。本文将详细介绍如何使用HTML转PDF的方法,并重点讲解在JavaScript环境下,特别是基于`jspdf`库的实现方式。 `jspdf`是一个开源的...
10. **软件工程实践**:除了技术细节,这个项目还可能包含良好的软件工程实践,如模块化设计、注释、测试和文档。这些对于维护和扩展项目至关重要。 通过学习和分析这个项目,开发者不仅可以掌握Qt游戏开发的基本...
源码的组织结构可能包括以下几个部分:主程序入口、模块化功能(如传感器接口、数据处理、BEV渲染)、配置文件、测试用例、文档等。 【编程语言】根据文件名无法直接确定使用哪种编程语言,但在自动驾驶和计算机...
为了使用“CSS鸟”,开发者首先需要下载提供的压缩包“css-bird-master”,解压后按照项目文档的指示进行安装和运行。通常,这涉及克隆Git仓库、安装依赖项,并通过命令行工具启动应用。在使用过程中,开发者可以...
"_thecode_"这部分暗示我们将讨论的是实际的源代码,而不是文档或概念。 【描述】:“FlappyBird reproduction project source code”揭示了这个Java项目是关于复现经典游戏《Flappy Bird》的。Flappy Bird是一款...