NekoHTML学习笔记
- 格式:doc
- 大小:77.00 KB
- 文档页数:14
Capture Allegro学习笔记Allegro中常见的文件格式.brd 工具:PCB Design Expert PCB布线.ddb 工具:Protel.art 工具:CAM350 Allegro PCB Design file/impot ARTwork.d 工具:pads2005.drl 工具:Protel.opj 设计项目工程.olb 创建新的元件库allegro/APD.jrl :记录开启Allegro/APD 期间每一个执行动作的command . 产生在每一次新开启Allegro/APD 的现行工作目录下.env :存在pcbenv 下,无扩展名,环境设定档.allegro/APD.ini :存在pcbenv 下,记录menu 的设定.allegro/APD.geo :存在pcbenv 下,记录窗口的位置.master.tag :开启Allegro/APD 期间产生的文字文件,记录最后一次存盘的database文件名称,下次开启Allegro/APD 会将档案load 进来.从Allegro/APD.ini搜寻directory = 即可知道Master.tag 存在的位置 . lallegro.col :存在pcbenv 下,从设定颜色的调色盘Read Local 所写出的档案.只会影响到调色盘的24 色而不会影响class/subclass 的设定..brd :board file (Allegro)..mcm :multi-chip module (APD) ,design file..log :记录数据处理过程及结果..art :artwork 檔..txt :文字文件,如参数数据,device 文件 .. 等..tap :NC drill 的文字文件..dat :资料文件..scr :script 或macro 记录文件..pad :padstack 檔..dra :drawing 档, create symbol 前先建drawing ,之后再compiled 成binary symbol 档..psm :package symbol ,实体包装零件..osm :format symbol , 制造,组装,logo图形的零件..ssm :shape symbol , 自订pad 的几何形状,应用在Padstack Designer. .bsm :mechanical symbol , 没有电器特性的零件..fsm :flash symbol , 负片导通孔的连接方式..mdd :module ,模块,可在Allegro 建立,包含已placed , routed 的数据..sav :corrupt database,当出现此种档案时,表示你的板子的数据结构已经破坏,情况不严重可以用DB Doctor修复。
昨日回顾<style type="text/css">.box{width:800px;margin:0px auto;border:1px solid #444;background-color:yellow;padding:10px;}.box .header{height:90px;margin-bottom:10px;background-color:#6600ff; }.box .left{width:590px;height:400px;float:left;background-color:#009900; }.box .right{width:200px;height:400px;float:right;background-color:#ff9933; }.box .footer{height:90px;margin-top:10px;background-color:#ccc;}.clear{clear:both;}</style></head><body><div class="box"><div class="header"></div><div class="left"></div><div class="right"></div><div class="clear"></div><div class="footer"></div></div>display属性●功能:规则网页元素如何显示的问题。
●取值:none(隐藏)、block(以块元素显示)、inline(以行内元素显示) ●block:可以实现将行内元素转成块元素。
Nuke 学习笔记欧阳光明(2021.03.07)快捷键:添加Viewer节点:Com+I;调入素材:R;Merge节点:M;设置:Nuke不支持中文目录;在开始nuke之前,要先设置项目:其中主要涉及到目标合成的帧速率、分辨率、时长以及是否使用代理等参数;Node Graph面板下可设置工作区域中的网格吸附及显示等相关参数;界面布局:工具栏、视图窗口、节点/曲线编辑、参数面板/脚本编辑窗口;组合面板:Nuke的面板可以拖拉的方式自由组合;该界面可以保存便于下次调用;分割面板:通过右击分割条标志可以对面板进行分割;菜单操作:快捷菜单具有记忆功能,会自动定位到最后一次使用的命令或节点上;按Tab键可进行命令搜索;可以在工具栏上点击中键重复执行最后一次添加的节点操作;View节点:可以把最多10个节点连接到Viewer节点上,利用快捷键09快速的循环查看该节点内容以进行比较;添加Viewer节点:Com+I;选择需要查看的节点按数字键即可显示该节点内容,或者通过拖拉连接来实现;判断View节点显示的节点对象:点击Viewer节点,查看高亮显示的虚线连接即可;调入素材:R;导入的时候,如果勾选序列滤镜选项,则会把带序号的文件作为一个整体,不勾选则可以对单帧进行操作,默认是勾选;单击右侧的箭头可以对素材进行预览;背景制作:在Image节点菜单中选择Constant节点,之后在属性面板中为其定制背景色彩并对之进行命名;Reformat节点可以自动把素材设置成和项目一样的格式;同时选择两个节点按M键可以把二者用Merge节点连接起来;自动对齐:L;项目设置:S;全屏:Alt+S;代理与完整模式的切换:Ctrl+P;重命名节点:选择后按N键即可;断开连接:选择节点按Ctrl+D;属性面板:数字控制浮动面板的数量;选择节点:上游节点的选择:按Ctrl键,移动该节点即可;粘贴节点:如果选择节点,则所粘贴的节点会与该节点相连,若不选择节点,则粘贴的节点是独立的;克隆节点:Alt+K;相当于Max中的实体对象,两者中的参数是相关联的,其中一个参数的改变都会影响另一个;解除克隆的关联性:Alt+Shift+K;关闭节点显示(屏蔽节点):D;断开连接:选择下游节点后按Ctrl+D;复制连接:也可理解为多重连接,按Shift键,拖动连接到另一节点上;添加预览节点:Ctrl+I;如果预览节点不存在,按数字键可以增加预览节点;连接预览节点:选择节点后按10数字键,可以自动连接到预览节点上;添加Dot:按住Ctrl键,单击显示在连线中的小点即可;移动节点树:Ctrl为部分移动,Alt为全部移动;添加节点:选择当前节点,按Tab键键入名称,相似的节点名称就出来了,直接选择即可,这适合对节点名称相当熟悉的操作;最大化居中显示:F;平移:Alt+拖动;缩放:+/;或滚动中键;100%显示:Ctrl+1;定义播放范围:按Ctrl键在播放头左侧单击定义起始帧,在播放头右侧单击定义结束帧;采集平均像素:Ctrl+Shift+框选;关闭像素比:Ctrl+Shift+P;刷心框:Shift+W;Nuke的目录:Home:指向文档;Root:指向路径的顶层目录;Work:指向定义的网络工作路径;Edit:编辑书签或路径名称;色块儿参数操作:单击参数区,左键增量右键减量,均为一个单位;按Shift键,则为10个单位;也可以用滚轮;加大对话框宽度,可改变色条方向;在色盘上,按Ctrl键拖动仅改变色相;按Alt拖动仅改变饱和度;选好色彩后,右击色块儿可以进行保存;一般只会打开一个色盘,按Ctrl键单击色盘图标,可以打开另外一个;跳到指定的帧数:Alt+G;全局设置:S;设置关键帧:在播放条中进行定位,之后右击曲线按钮,选择Set Key命令进行设置,此时色块儿变为青色;在另外一个位置继续改变参数,自动建立关键帧;播放条上会继续以青色表示;如果要删除所有的关键帧,右击曲线按钮,选择No animation,在弹出的对话框中确认即可;如果要打开动态曲线,可选择Curve edius命令;曲线编辑:最大化显示:A或F;第一层:节点名称;第二层:节点参数名称;第三层:曲线;添加关键帧:Ctrl+Alt+单击曲线;平移:Alt+拖动;批量添加关键帧:右击选择Generate,Increment表示每多少帧添加一关键帧;Size表示y的参数,可用表达式;改变关键帧:一次只能沿单轴移动关键帧,按Ctrl键可进行双轴移动;或者单击关键帧旁边的参数值,进行参数化操作;框选多个关键帧,可利用同步框同时移动该关键帧;右击关键帧可改变曲线的性质;按Ctrl键可调整曲柄的长度;按Shift+Ctrl+Alt可绘制曲线;光滑曲线:右击选择Filter命令即可;在同一Viewer中查看不同的节点效果:选择欲查看的节点按数字键(相当于定制),之后可以按相应的数字键进行查看,看原始素材也采用同样的方法,最多连接10个;添加预览节点:Ctrl+I;平移视窗:Alt+拖动;最大化视窗:F;缩放窗口:+、;或按住Alt+拖动中键;或者滚动中键进行缩放;平移时间线:Alt+左键拖动;缩放时间线:Alt+中键/右键拖动;或用滚珠;恢复时间线:右击时间线或用中键单击时间线;局部放大时间线:右键拖动区域;定义播放范围:按Ctrl键,单击起始帧和结束帧;也可按Ctrl键拖动起始帧和结束帧标记进行定位;快速跳到特定帧:Alt+G;刷新区域:Shift+W;混合预览模式:选择一个节点按1,选择另一个节点按2,在预览窗口的AB菜单中选择对比的画面,再在中键菜单中选择Wipe,进行对比;可以移动或旋转分割线;播放控制:其中控制图像显示的有两个:一个是控制Gamma,一个控制Gain,是为了便于查看素材,与最终输出没有关系;还有就是维度显示和AB显示的对比;局部更新的功能也不错;节点中Node下的四个选项:Hide input、Cached、Postage Stamp和Disable;Postage Stamp为显示小屏幕,预览该节点效果;调整参数:移动鼠标到参数上,用上下光标键进行调整;或者用中键滚珠;恢复默认值:Ctrl键+单击参数;在3D视图中:Alt+左键:平移视图;Alt+中键:缩放视图;Alt+右键:摇移视图;播放素材:Alt+F(调出播放器);Nuke支持Ofx格式的插件;调色:调入素材,按G键调入Grade节点(在快捷菜单Color中),单击相应的黑白点儿色块儿,使其显示吸管图标,按住Ctrl键可以在图像中选择黑白点儿;如果按住Ctrl+Shift可以框选;单击数字框,可以在滑块儿和数值框间进行切换;添加Huecorrect节点,在其中选择Sat项中的色相和相应的sup进行调整;定义色调范围(黑白点和过渡值)是色彩校正的第一步;Histogtam 和Grade是最常用的节点;利用Grade采集黑白点:按G键调入Grade节点(在快捷菜单Color中),单击相应的黑白点儿色块儿,使其显示吸管图标,按住Ctrl键可以在图像中选择黑白点儿;按住Ctrl+Shift并在需要的像素点上进行拖动;单击数字框,可以在滑块儿和数值框间进行切换;如果要用色彩曲线进行调整,可用Colorlookup节点实现;如果用HSV调整,可用HSVTool节点,但其最大的功能就是利用它获取遮罩功能;(Un)Premult选项可消除Mask的黑边问题;Card3D节点:Transform Order中,s表示缩放,R表示旋转,T表示位移;按Ctrl键出现旋转操作圈,可进行相应的旋转操作;关于运动模糊:在若干节点内会有MotionBlur选项控制运动模糊,一般1就够了,Shutter为快门速度,一般在0.5;关于追踪节点:在开始追踪时,多播放几次图像,这点非常重要,他可以让你找到最具特征最适合捕捉的区域,包括运动模糊或特征点移出屏幕等问题;其次是可能要运用滤镜在增加其特征的可见性,之后可以废除该滤镜;在追踪完一个点之后,可以关闭它,免得重复计算;在Viewer中可以按O键进行与追踪器有关的不同状态的切换;分别为显示追踪器,显示追踪路径,不显示;补偿追踪,按Ctrl键拖动追踪点,可在原来的基础上拉出一个黄线,继续追踪就是了;编辑追踪曲线:选择追踪点后面的曲线按钮,打开追踪曲线,进行编辑即可;一般就是让动画曲线更圆滑,同时删除出格的追踪点;也可以在Transform面板中修改Smooth的值;或者在曲线中选择追踪点,利用Edit\Filter命令进行光滑;链接追踪信息,按Ctrl键拖动追踪曲线按钮到目的地即可;此时目的地按钮变为蓝色,表示有表达式存在;复制节点之后如果粘贴该节点,之前如果选择了节点,则会将粘贴的节点与你选择的节点相连接;克隆节点与Max中的实例相似,二者的参数调节相互影响;复制连接:按Shift键拖动箭头到目的节点,则原来的连接还在;CornerPin节点:替换运动画面中的某处画面;比如对于某画面内需要需要替换的画面,可用追踪节点追踪其四个角的轨迹,将ornerPin2D节点连接到用来替换的序列帧上,并将追踪信息传递给ornerPin2D节点的4个角;to1表示左下角,to2表示右下角,to3表示右上角,to4表示左上角;其方法为:同时打开追踪节点和ornerPin节点,按Ctrl键,把追踪节点中相应追踪点的曲线按钮拖到对应的ornerPin中的to1234上即可;Stabilize2D节点,同样要利用追踪节点的信息进行画面稳定;选择追踪节点,之后加入Stabilize2D节点;Primatte抠像:可选择Autocompute(自动计算),之后调整Auto BG Factor和Auto FG Factor即可;常规操作:一般围绕Actions和Operation下拉菜单和Viewer窗口进行操作;确定Operation选项为Select BG Colour选项,单击下面的色块使之呈滴管状态,按Ctrl键在画面中单击或拖动,如果色彩不统一,反复几次进行采样,或按Shift+Ctrl拖动框选;之后在预览区域,按A键切换到A通道,在确认Operation选项为Cleam BG Noise时,在背景中框选区域以清除背景燥波;用同样的方法选择Clean FG Noise以清除前景燥波;去除溢出色:继续选择其下的Spill Sponge选择,之后对溢出区域进行采样即可;还可以用Fine Tuning或者用Spill()来去除,但这两种都需要手动清理;其实,所有的溢出去除或替代操作都可以用Spill Process里的Replacement with工具来改变。
HTML整理笔记By:小A(我在这里虽然是把HTML标签做个简单的介绍,我想我写的很详细,即使不会,没接触过HTML的人也能够看的懂,也能够学会,还有...第一次写没有大纲,见谅!最后送给大家一句话:多抽出一分钟时间来学习,让你的生命更加精彩!)1.什么是HTML?HTML (Hyper Text Markup language)超文本标记语言,用于创建网页文档。
使用HTML标记(标签)和元素创建扩展名html 、htm2.HTML常用标记(标签)标记类型名称或意义作用备注文件标记<HTML>●文件宣告让浏览器知道这是HTML 文件<HEAD>●开头提供文件整体信息<TITLE>●标题定义文件标题,将显示于浏览器顶端<BODY>●主体设计文件格式及内容所在排版标记<!--注解-->○说明标记为文件加上说明,但不被显示<P>○段落标记为字、图、表格等之间留下一空白行<BR>○换行标记令字、图、表格显示于下一行<HR>○水平线插入一水平线反对<CENTER>●居中令字、图、表格等显示于中间<PRE>●预设格式令文件按原代码的排列方式显示<DIV>●定位标记设定字、图、表格等的摆放位置<NOBR>●不换行令文字不因太长而换行<WBR>●建议换行预设换行部位字体标记<STRONG>●加重语气产生字体加粗Bold 的效果<B>●粗体标记产生字体加粗的效果<EM>●强调标记字体出现斜体效果<I>●斜体标记字体出现斜体效果<TT>●等宽字体Courier字体,字母宽度相同<U>●加下划线加下划线反对<H1>●一级标题标记将字体变大,级数越高越小<H2>●二级标题标记将字体变大<H3>●三级标题标记将字体变大<H4>●四级标题标记将字体变大<H5>●五级标题标记将字体变大<H6>●六级标题标记将字体变大反对<FONT>●字体标记设定字体、大小、颜色反对<BASEFONT>○基准字体标记设定所有字体、大小、颜色<BIG>●字体加大令字体稍微变大<SMALL>●字体缩小令字体稍微缩小<STRIKE>●加删除线为文字加删除线反对<CODE>●程式码字体稍微加宽如<TT><KBD>●键盘字字体稍微加宽,单一空白<SAMP>●范例字體稍為加寬如<TT><VAR>●变量斜体效果<CITE>●斜体标记斜体效果<BLOCKQUOTE>●向右缩排文字向右缩排<DFN>●述语定义斜体效果<ADDRESS>●地址标记斜体效果<SUB>●下标字文字下标<SUP>●上标字文字上标清单标记<OL>●顺序清单清单项目将以数字、字母顺序排列<UL>●无序清单清单项目将以实心圆点作为符号排列<LI>○清单项目清单中的项目,一个标记一行反對<MENU>●选项清单可用type参数指定项目符号。
01-01.什么是HTML整个网页加载时最先执行的代码head,在英文里面是头部的意思。
在英文里面body是身体的意思。
整个网页的主体内容。
<html><head><style>21互联远程教育网</style></head><body></body></html>01-02.什么是属性举个例子,什么是属性。
一辆汽车每小时行驶多少公里这是它的属性,每公里耗油量也是它的属性。
一个本子长和宽是他的属性。
<html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" text="#000000">大家好,欢迎大家收看21互联远程教育网</body></html>Text:非链接文本颜色Bgcolor:背景颜色01-03.十六进制详解01-04.如何定义网页背景<html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">大家好,欢迎大家收看21互联远程教育网</body></html>Background背景资料相对路径:图片如在你所编辑文件的上一层就用../表示,如在同一文件夹当中可先写出子文件夹名称再用/分开然后写图片名称,如果与你所编辑文件在同一文件夹当中可直接写出图片名称.图片名称需英文.绝对路径:例一辆车在某省某市某个区的停车库里面.01-05换行标签<br/><html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">Hello world<br><br>大家好,欢迎大家收看21互联远程教育网</body></html><br>是空标记01-06.段落标签<p><html><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">Hello world<p>大家好,欢迎大家收看21互联远程教育网</p></body></html><html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">Hello world<p align="center">大家好,欢迎大家收看21互联远程教育网</p></body></html><html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">Hello world<p align="center"><b>大家好,欢迎大家收看21互联远程教育网</b></p></body></html><html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">Hello world<p align="center"><b><i>大家好,欢迎大家收看21互联远程教育网</i></b></p></body></html><html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff">Hello world<p align="center"><b><i><u>大家好,欢迎大家收看21互联远程教育网</u></i></b></p> </body></html>align对齐center中心right 右边left 左边 b 粗体i斜体u下划线01-07.背景属性Bgproperties<html><head><style>21互联远程教育网</style></head><body bgcolor="#FF00aa" background="yangyan.jpg" text="#ffffff" bgproperties="fixed"> Hello world<p align="center"><b><i><u>大家好,欢迎大家收看21互联远程教育网</u></i></b></p> </body>bgproperties是控制body背景的一个属性,他的属性值为fixed的时候,它将把背景图像冻结在浏览窗口,背景图就不会随着其他窗口内容而滚动了。
HTML自学笔记笔记人:田克传一、深入体验JavaScript网页编程1、HTML语言基础<body>标签的属性示例Text属性:用于设定整个网页中的文字颜色。
Link属性:用于设定一般超级链接文本的显示颜色。
Alink属性:用于设定鼠标移动到超链接上时,超链接文本的显示颜色。
Vlink属性:用于设定访问过的超链接文本的显示颜色。
Background属性:用于设定背景墙纸所用的图像文件,可以是GIF或JPEG文件的绝对或相对路径。
Bgcolor属性:用于设定背景颜色,当已设定背景墙纸时,这个属性会失去作用,除非墙纸具有透明部分。
Leftmargin属性:用于设定网页显示画面与浏览器窗口左边沿的间隙,单位为像素。
Topmargin属性:用于设定网页显示画面与浏览器窗口上边沿的间隙,单位为像素。
Class、name、id、style等属性。
注释符与特殊字符示例用<!—注释→这种格式加入注释。
<p></p> 段落标签。
(具有Align属性:center为居中,left为左对齐,right为右对齐。
) <br> 换行。
<nobr></nobr> 防止浏览器自动换行。
<blockquote></blockquote> 浏览器按缩进效果显示。
<center></center> 水平居中显示。
<marquee></marquee> 通知浏览器移动显示。
(具有属性behavior=“slide”或“scroll”或“alternate”,direction=“up”或“down”或“left”或“right”)<dl></dl> 创建普通列表。
<dt></dt> 创建列表上层的显示条目。
<dd></dd> 创建列表下层的显示条目。
Intouch学习笔记(之一)1、关闭右键菜单在intouch.ini文件中加入 oldrightmousebehavior = 12、SmartSymbol 不能包含位图,按钮,单元,报警和趋势3、初始化标记名与创建ActiveX 控件之间会出现定时问题。
由于此定时问题,很难保证标记名的初始值等于ActiveX 控件中相关属性的值。
为解决此问题,必须在“启动”事件与InTouch QuickScript 之间建立一种联系。
在QuickScript 中,可采用适当的逻辑将标记名值设置为控件的属性。
这可以通过使用赋值语句来实现。
例如:#ThisControl.Property = MyTag;事件发生之后,QuickScript 即开始执行,控件的属性与标记名的值将保持同步。
因此,属性与标记名之间会出现正常的通知。
4、将“ActiveX 事件”脚本从一个InTouch应用程序移到另一个应用程序时,您必须使用WindowMaker 文件菜单上的导入命令。
5、用于启用/ 禁用键过滤器的脚本函数是EnableDisableKeys。
6、UNC路径中使用Wonderware 的SuiteLink 协议时,NodeName 长度限制为15个字符。
7、要在节点上配置多监视器设置以下内容需要回复才能看到1. 使用合适的文本编辑器,例“记事本”Windows目录中的WIN.INI 文件。
2. 找到[InTouch] 部分并添加下列参数:[InTouch] 参数描述MultiScreen=1 打开多屏幕模式MultiScreenWidth=640 单个屏幕的像素宽度MultiScreenHeight=480 单个屏幕的像素高度例如,如果您计算机的分辨率是2560x1024,分开显示在两个并排的屏幕上,则可输入下列内容:[InTouch]MultiScreen=1MultiScreenWidth=1280MultiScreenHeight=10248、SuperTag 模板最多可容纳64 个成员标记名和2 个嵌套级别。
第四课:了解HTML 4-1 认识是HTML
1、代码中的〈hr∕〉在网页上显示为一条水平线
2、比较简单的网页代码在网页视图中的现实状况
3、HTML在网页中的显示情况
〈html〉〈html∕〉代表网页代码的开始和结束
“〈head〉文件头信息〈head∕〉”不显示在网页中“〈body〉正文〈body∕〉”部分在网页中显示
4-2 常见的HTML标记
1、段落代码对应的显示
2、网页标题标记“〈title〉标题〈title∕〉”
3、图片标记“〈img∕〉”
4、超链接标记“〈a〉〈a∕〉”
4-3 学习HTML小结
4-4 文件头信息
1、这些代码主要说明网页设计的标准或版本,不用理会
2、插入“刷新”
设置刷新的项
3、文件头代码中的关键字代码
选择“插入—HTML—文件头标签—关键字”菜单。
设置关键字项,关键字词之间用逗号“,”隔开,添加的关键字不要过多
添加成功
4、添加网页的说明
选择“插入—HTML—文件头标签—说明”菜单。
设置说明内容
设置成功。
Basic Tutorial 1主要讲了几个OGRE中的基本概念:1.SceneManager:所有屏幕上可见的东西都由SceneManager来管理;有多种类型的SceneManager,分别用来渲染Terrain、BSP等等。
2.Entity:初步的理解一个Entity代表一个Mesh(可以含有动画),Light,Camera,Particle,Billboard 不用Entity表示。
Entity不能直接加到场景中,必须先attach到一个SceneNode上,SceneNode管理位置和方向。
3.SceneNode:SceneNode管理位置和方向;需要注意子节点的是在父节点的空间中;一个SceneNode可以管理多个对象。
4.OGRE中的Entity和SceneNode都必须指定全局唯一的名称。
Basic Tutorial 2 主要是讲OGRE中的Light和Shadow的设置1.要开启阴影:首先要调用SceneManager:: setShadowTechnique(),然后对于需要开启的Entity调用Entity:: setCastShadows()。
2.灯光和摄像机都需要由SceneManager来创建,分别是SceneManager::createLight()和SceneManager::createCamera()。
Basic Tutorial 3 主要讲Terrain场景,Sky和Fog1.为了处理Terrain场景,首先要选择相应类型的SceneManager,这里选择了“ST_EXTERIOR_CLOSE”类型。
这个操作是通过Root::createSceneManager()完成的。
此操作创建并返回了一个TerrainSceneManager 指针,同时创建了一个HeightmapTerrainPageSource对象。
2.加载地形是通过:mSceneMgr->setWorldGeometry( "terrain.cfg" );语句来完成的。
NekoHTML学习笔记J. Andrew Clark用Java写了一系列的工具(Java APIs),NekoHTML是其中之一。
NekoHTML是一个简单地HTML扫描器和标签补偿器(tag balancer) ,使得程序能解析HTML文档并用标准的XML接口来访问其中的信息。
这个解析器能投扫描HTML文件并“修正”许多作者(人或机器)在编写HTML文档过程中常犯的错误。
NekoHTML能增补缺失的父元素、自动用结束标签关闭相应的元素,以及不匹配的内嵌元素标签。
NekoHTML的开发使用了Xerces Native Interface (XNI),后者是Xerces2的实现基础。
一、运行要求从NekoHTML主页上下载nekohtml-latest.zip,目前版本是0.8.NekoHTML要求运行在java1.1或更高版本,Xerces-J 2.0或更高版本。
(我在试用时,随便拿了个xerces的包来用,结果例如运行老时不能通过,折腾半天后才发现版本不够所致.:)二、使用NekoHTML1、透明地创建HTML解析器利用Xerces2.0为基础,应用程序通过JAXP实例化解析器对象时,可以透明地创建HTML解析器,此时只需要将NekoHTML的jar文件,在CLASSPATH中放在Xerces的jar文件之前即可。
nekohtmlXni.jar中的META-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration 文件会被Xerces的读取并取代标准的设置文件,此处org.apache.xerces.xni.parser.XMLParserConfiguration文件的内容就是一个字符串“org.cyberneko.html.HTMLConfiguration”。
这种方法的好处是简单透明,缺点是影响了Xerces在其它情况下的使用。
2、便利的HTML解析器类要想避免上述的问题,可以使用org.cyberneko.html.parsers包的DOM和SAX解析器类来创建解析器,这两个类都使用了HTMLConfiguration类。
解析器一旦创建之后,就可以解析HTML文件,并用标准的XML接口来访问文件中的信息,就象面对的是一个XML文件一样。
下面的代码是NekoHTML自带的例程,我改了一下,使其可以显示HTML文件内容,而不显示类的名字。
package sample;import org.cyberneko.html.parsers.DOMParser;import org.w3c.dom.Document;import org.w3c.dom.Node;public class TestHTMLDOM {public static void main(String[] argv) throws Exception { DOMParser parser = new DOMParser();for (int i = 0; i < argv.length; i++) {parser.parse(argv[i]);print(parser.getDocument(), "");}}public static void print(Node node, String indent) {// System.out.println(indent+node.getClass().getName()); if (node.getNodeValue() != null){if("".equals(node.getNodeValue().trim())){ }else{System.out.print(indent);System.out.println(node.getNodeValue());}}Node child = node.getFirstChild();while (child != null) {print(child, indent+" ");child = child.getNextSibling();}}}编译运行如下:cd $NEKOHTML_HOMEcp build_html.xml build.xmlantjava -cpnekohtml.jar;nekohtmlSamples.jar;xmlParserAPIs.jar;xercesImpl.jar sample.TestHTMLDOM test.html如果一切正常可以显示HTML的内容了。
3、文档片段解析除了DOM和SAX类,NekoHTML还提供了一个实验性质的DOMFragmentParser 类,用以解析HTML文件的片段。
我个人认为,由于浏览器的强大的容错能力,即使一个片段的HTML文件,也可以正确显示,由此也变相地造成了很多人不再关心的HTML的完整要求了。
这个类,也许将是用的最多的。
下面,看看nutch 是如何使用nekoHTML的。
package net.nutch.fetcher;...import org.cyberneko.html.parsers.*;import org.xml.sax.*;import org.w3c.dom.*;import org.w3c.dom.html.*;import org.apache.html.dom.*;/* A simple fetcher. */public class Fetcher {....private DOMFragmentParser parser = new DOMFragmentParser();....private void handleFetch(URL url, FetchListEntry fle, Http.Response response)throws IOException, SAXException {//判断HTTP应答包的类型,只放过html文件String contentType = response.getHeader("Content-Type");if (contentType != null && !contentType.startsWith("text/html")) throw new IOException("Unknown content-type: " + contentType); //创建文件片段对象DocumentFragment node = newHTMLDocumentImpl().createDocumentFragment();//解析HTML内容parser.parse(new InputSource(newByteArrayInputStream(response.getContent())),node);//取得全部文本内容StringBuffer sb = new StringBuffer();getText(sb, node);String text = sb.toString();//取得标题信息sb.setLength(0);getTitle(sb, node);String title = sb.toString().trim();//取得该页所有的出链ArrayList l = new ArrayList();getOutlinks(url, l, node);//显示结果,存储信息Outlink[] outlinks = (Outlink[])l.toArray(new Outlink[l.size()]); LOG.fine("found " + outlinks.length + " outlinks in " + url);outputPage(new FetcherOutput(fle,MD5Hash.digest(response.getContent()),true, title, outlinks),new FetcherContent(response.getContent()),new FetcherText(text));}private static void getText(StringBuffer sb, Node node) {if (node.getNodeType() == Node.TEXT_NODE) {sb.append(node.getNodeValue());//取得结点值,即开始与结束标签之间的信息}NodeList children = node.getChildNodes();if ( children != null ) {int len = children.getLength();for ( int i = 0; i < len; i++ ) {getText(sb, children.item(i));//递归遍历DOM树}}}private static boolean getTitle(StringBuffer sb, Node node) {if (node.getNodeType() == Node.ELEMENT_NODE) {if ("title".equalsIgnoreCase(node.getNodeName())) { getText(sb, node);return true;}}NodeList children = node.getChildNodes();if (children != null) {int len = children.getLength();for (int i = 0; i < len; i++) {if (getTitle(sb, children.item(i))) {return true;}}}return false;}private static void getOutlinks(URL base, ArrayList outlinks, Node node) {if (node.getNodeType() == Node.ELEMENT_NODE) {if ("a".equalsIgnoreCase(node.getNodeName())) {StringBuffer linkText = new StringBuffer();getText(linkText, node);NamedNodeMap attrs = node.getAttributes();String target= null;for (int i= 0; i < attrs.getLength(); i++ ) {if ("href".equalsIgnoreCase(attrs.item(i).getNodeName())) {target= attrs.item(i).getNodeValue();//在DOM树中,属性是一个结点。