Flash编程绘画的简单运用

时间:2022-05-06 11:24:41 其他范文 收藏本文 下载本文

Flash编程绘画的简单运用((锦集5篇))由网友“传奇屁王”投稿提供,这次小编给大家整理过的Flash编程绘画的简单运用,供大家阅读参考。

Flash编程绘画的简单运用

篇1:Flash AS影片绘画方法的简单运用

Flash MX又增强了其绘图功能,现在,可以使用AS影片对象中的绘画方法让Flash根据程序绘制图形,十分的方便,本文中笔者将通过几个实例来给大家讲解如何使用绘画方法来绘制图形及其相关的知识和技巧。

源文件下载:点击这里下载源文件(7K, winzip压缩文件)

效果预览:

圆形1

圆形2

矩形3

为了使读者很好的理解下面的内容,我们先来做一个简单的例子――画一条直线。可能有的朋友会说,画一条直线谁不会啊。不是的,是让Flash自己画一条直线。

打开Flash,点选第1帧,按F9打开“动作面板”,输入如下代码:

// 设置线条样式

_root.lineStyle(3,0xF12345,100);

// 设置线条起点

_root.moveTo(50,0);

// 绘制线条

_root.lineTo(100,0);

执行一下代码,你将会看到,Flash自动从点(50,0)开始,到点(100,0)结束,绘制一条线宽为3个像素的红色横线。

现在,我们深入些,让Flash画一个圆。设计这个实例不需要做任何元件,只需要编写几段简单的代码即可。打开Flash MX,分别点选第2、第3帧,按F7插入空白关键帧,如图1所示。

图1

分别点选第1、2、3帧,按F9打开“动作”面板,键入如下代码。其实,这三帧中的代码可以和到一帧中,但为了能使大家更清楚地了解这些代码是如何工作的,笔者把这些代码拆分开来讲解。

第1帧代码:

// 指定一个线条样式

i=-Math.PI;

_root.lineStyle(2,0x000000,50);

_root.moveTo(50,100);

代码解析:

绘画方法lineStyle的用法为myMovieClip.lineStyle. ([thickness[,rgb[,alpha]]])。其作用是指定一个线条样式,以便lineTo和curveTo方法的后续调用,直到使用其他参数调用lineStyle为止。也可以在绘制路径的中间调用lineStyle方法来为路径中的不同线条段指定不同的样式。

其中,thickness是一个整数,以磅为单位指示线条的粗细,有效值为0到255。如果未指定数值,或者该参数为undefined,则不绘制线条。

rgb是线条的十六进制颜色值(如,红色为 0xFF0000,蓝色为 0x0000FF)。如未指示该值,则默认使用0x000000(黑色)。

alpha也是一个整数,该参数控制线条颜色的Alpha值,有效值为0到100。如果设置该值,则使用100(纯色)。如果该值小于0,则使用0;如果该值大于100,则使用100。

绘画方法moveTo的用法是myMovieClip.moveTo (x,y)。其作用是将当前绘画位置移到(x,y),也就是设置绘制图像的原点。如果缺少任何一个参数,则此方法将失败,并且当前绘画位置不改变。参数x(y)是一个整数,指示相对于父影片剪辑的注册点的水平(垂直)位置。_root.moveTo(50,100)就是在x坐标为50个单位,y坐标为100个单位的地方作为起点开始绘制图形。

第2帧代码:

// 绘制线条

_root.lineTo(100+50*Math.cos(i),100+50*Math.sin(i));

i+=0.05;

代码分析:

绘画方法lineTo可以使用线条样式从当前绘画位置向点(x,y)绘制线条;当前绘画位置随后被设置为(x,y),

如果正在其中绘制的影片剪辑包含用绘画工具创建的内容,则调用lineTo将在该内容下面进行绘制。如果在对moveTo方法进行任何调用之前调用了lineTo方法,则当前绘画位置默认为(0,0)。如果缺少任何一个参数,则此方法将失败,并且当前绘画位置不改变。参数x(y)是一个整数,指示相对于父影片剪辑的注册点的水平(垂直)位置。

Math.sin(x)计算并返回以弧度为单位指定的角度的正弦值。参数x是以弧度为单位的角度值。

第3帧代码:

// 循环

if (i

gotoAndPlay(2);

} else {

stop;

}

Math.PI是一个常数,代表一个圆的周长与其直径的比值的数学常数,也就是3.1415……。

代码到这里就编写完毕了。当测试的时候,大家可以看到,Flash从点(50,100)开始,绘制一个线宽为2个单位,黑色,半径为50个单位的圆。如图2所示。

如果你想在1帧中完成所有的事情,编写如下代码即可:

_root.lineStyle(2, 0x000000, 50);

_root.moveTo(150, 100);

function c() {

_root.lineTo(100+50*Math.cos(i), 100+50*Math.sin(i));

i += 0.05;

}

if (i

// 每隔50毫秒执行一次函数c

setInterval(c, 50);

} else {

stop();

}

教个大家这段代码,主要有两个用意。其一,学习setInterval()的使用方法。该动作在播放影片时,每隔一定的时间间隔,就调用函数、方法或对象。使用这个动作还可以用来更新来自数据库的变量或更新时间显示。其二、笔者把圆形绘制的起点改动了一下,如图3所示。这样,绘制线条的位置就变动了。在绘制图形时,图形的位置控制和预知是很重要的,否则将会一团糟。

大家已经学习了如何绘制图形了,那,怎么给绘制的图形着色呢?下面,我们来给一个矩形着色。打开Flash,点选第1帧,按F9打开“动作面板”,输入如下代码:

// 设置填充色

beginFill(0xFF0000,100);

lineStyle(3,0xFF9900,100);

moveTo(100,50);

lineTo(200,50);

lineTo(200,150);

lineTo(100,150);

lineTo(100,50);

// 结束着色

endFill();

代码分析:

绘画方法beginFill:指示新的绘画路径的开始。myMovieClip.beginFill([rgb[,alpha]])。参数gb是一个十六进制颜色值(例如0xFF0000)。如果未提供或未定义该值,则不创建填充。参数alpha是介于0到100之间的整数,指定填充的Alpha值。如果未提供该值或值大于100,则使用100(纯色)。如果该值小于0,则使用0。

与beginFill相似的绘画方法BeginGradientFill决定了填色形式、色彩、透明度、比例和矩阵值。用法为:myMovieClip.beginGradientFill (fillType, colors, alphas, ratios, matrix)。其中,fillType为字符串linear或字符串radial。Colors是一个数组,包括要在渐变中使用的RGB十六进制颜色值。Alphas也是一个数组,包括与 colors 数组中颜色相对应的Alpha值。ratios颜色配额的数组;有效值为0到255。该值按100% 定义了对颜色进行采样处的宽度的百分比。Matrix是一个变形矩阵。

好了,本文到这里就结束了。希望能对喜好使用Flash绘画的朋友有所帮助。

篇2:flash 高级编程指南

编程|高级

此篇教程由本人在法国的朋友章鑫杰为本站提供,所有内容均由作者本人手书.网站:www.openvue.net

btw:作者本人现从移动领域的开发,原本应还有更多的章节,但由于工作较忙,不能完成后续的章节.些教程中的四节,主要是针对macromedia组件的探讨.如果你对macromedia组件有兴趣或是对你现有的开发不知到底使用哪一种方式来做,兴许会适合你.

我向来觉得Flash MX 是一个面向程序员,尤其是Java,C#程序员的产品,从这款产品你可以看出Macromedia的发展方向,它要让Flash及其配套的服务器端产品成为电子商务的主要开发平台,从程序员的角度学Flash MX 2004,我最关注的是它背后的程序设计模式,它用XML非常好的融合了表现层,中间层,和数据库层,是设计数据库网络应用程序,或者说电子商务类程序很好的开发平台,并提供了一套非常强大的组件来加速开发进程,很多人学MX2004,只关注它的UI Component,这是皮毛,它的精髓在于和数据库相关的几个组件。

让我们站在高处来看一看这几个非常重要组件,大致了解一下在Flash MX 2004这么个环境下,一个典型的数据库应用程序应该怎么编。

首先,用Connector(包括XMLConnector, WebServiceConnector,RemotingConnector)来连接服务器,取得原始数据,这些原始数据一般要求是XML格式的,RemotingConnector除外,这些数据取得后,进入DataSet做一个缓存和数据格式的转换,这就是.NET和J2EE里面的Offline Database的概念,这不但可以融合不同数据源的数据,而且通过缓存可以大大提高效率。DataSet里面的数据可以通过Binding连接到UI Component上去,每个UI Component都有一个Binding面板,你可以把它们关联到DataSet。这样你只需要写一行代码就可以把数据展现给你的用户,就是:xmlconnector.trigger() 或者webservice.trigger()。Trigger命令会连接服务器并取得数据,剩下的工作因为你已经设置了Binding,所以数据自动在组件中间流动。

那么数据在客户端被修改后怎么传回服务器,进而把这些修改反映在数据库呢?Flash MX 2004为我们提供两个非常强悍的组件:RDBMSResolver和XUpdateResolver,这连个组件可以和DataSet关联,DataSet会把用户修改的数据按特定的格式传到这两个Resolver上去,RDBMSResolver用的格式是Macromedia自己定义的,很简单的格式,你可以在他们网站上找到参考资料。XUpdateResolver用的是XUpdate格式,是一种标准格式,很多Xml数据库都用它作数据库更新语言。这样DataSet可以自动通过Resolver连接服务器来修改数据。

你看,整个过程实际上不用怎么写代码,只需要设置一些属性,拖拉一些组件,把它们邦定一下就可以了,是不是很简单呢?

在(一)中我讲到Flash MX 2004有三种Connector,即XMLConnector, WebServiceConnector,RemotingConnector,如果你的Flash编辑环境中没有RemotingConnector,请到Macromedia的网站上去下载。

XMLConnector是最简单的一种连接器,服务器端可以是任何语言的脚本,ASP,PHP,JSP等都可以,它的好处是服务器程序不需要加载额外的库,只要你返回的内容是XML的就可以了。这样实际上方便了程序员用最少的成本将原有的服务器端脚本稍作更新,以配合Flash富客户端。它的坏处在于,这样的脚本使前后台程序员之间的配合比较困难,因为它的接口是隐藏的,因为如果你不能和脚本开发人员密切沟通,你对接口和参数的信息就一无所知,至少不全面,甚至不知道其中是否有后门。但如果你既开发前台又开发后台另当别论,另外很多习惯于传统的Web服务器脚本开发的人员也可以比较快的上手。

我们跳过WebServiceConnector,讲讲RemotingConnector,这个连接器基于Flash Remoting 技术,有不少的朋友很热衷于Remoting技术,但我并不是很看好它。应该说Remoting 技术的设计思想和Flash的SWF文件格式的设计思想是一脉相承的。它们都极力的强调带宽的重要,对于在Internet上传输的内容要尽量的精简,压缩。因为前一阵子,我曾经想开发一个J2ME版的Flash Player,所以我对SWF格式做过比较深入的研究,它在压缩方面做的相当到位,每一个bit都尽量利用,Remoting也是希望通过二进制字节流减少传输量来提高效率,所以我说它们的出发点是一样的。Remoting在本质上属于RPC的一种,它和DCOM,CORBA,JAVA RMI属于一类的技术,不同之处在于Remoting 的通讯协议采用HTTP,这样它就具备了WebService这样的跨越多个域,跨越防火墙的功能。在效率上Remoting毋庸置疑要高于WebService,但这不是我们取舍一个技术的决定因素,要不然,DCOM,CORBA这些东西的性能更强悍,但他们在Web时代却得不到广泛的使用。另外,Remoting是Macromedia的“私有财产”,MM拥有绝对的主动权对它进行修改和扩充,就像MM对Flash格式和AS进行大刀阔斧的改革一样,开发人员是很忌讳这种事情的。虽然MM公开了Remoting AMF通讯协议的大部分内容,但它实际上故意对媒体流的传输协议秘而不宣。很多人热衷Remoting很大程度上受了MM那个视频聊天DEMO的诱惑,而实际上为了要视频聊天,你需要付出惨重的代价,首先服务器必须用MM的软件,因为没有第三方知道怎么和Flash客户端交流媒体流,而MM的服务器软件按照connection收钱,贵的吓死你,用盗版另当别论。基于以上原因,我个人比较不赞成使用Remoting.

WebServiceConnector我放在最后讲。这是目前最有前途的RPC技术,有人说WebService 是个很糟糕的技术,因为Microsoft的极力推广才有它的今天。我对此不以为然,抛开对Microsoft的成见,它所推出的技术一般都相当成功,就像现在的.NET, C#,作为一个程序员,我只能用艺术品来形容它们。WebService 也许不是一个最完美的技术,但在当下,它最适合Web分布式计算。时至今日,它已经越来越成熟,而且在很多世界级的大型项目中得到了应用和考验。一个技术它被应用的越广泛,其价值也就水涨船高,它带来的一个显著的好处在于,你可以不用被绑死在一个开发平台上,无论是服务器端还是客户端,比如如果有一天你的客户要求你用SVG或者Java Applet开发客户端,因为你在服务器端采用了WebService,就可以很快的跨越到另一个客户端技术。不要以为这种情况不太会发生,实际上如果你看过SVG 2的技术文档,你就会发现Flash有一天很可能会被它取而代之,它真的很强大,也很适合开发富客户端应用程序,这时候你的服务器脚本如果采用了Remoting 技术,你可惨大了。再者,从开发环境而言,象VisualStudio.NET,WebSphere,JBuilder 等都对WebService提供了相当好的开发和调试环境。相对于XMLConnector,WebServiceConnector的优点还在于允许你在设计时(DesignTime)绑定(Binding)它的参数(Paremeters )和结果(Results)。比如你可以绑定你的复选框(CheckBox)到WebService的一个参数上,复选框里的选择内容被改变时,WebService被触发(Trigger),WebService连接服务器从数据库中取回新的数据更新DataSet,然后DataSet又更新和它邦定的其他组件,你看一个Master-Detail结构的数据库应用程序就这么简简单单的生成了,这个过程你真正要动手编的程序可能只有3,4而已。

总结:如果服务器端允许,你也具备一定的WebService编程经验,最好采用WebServiceConnector。尽量避免使用Flash Remoting。XMLConnector的使用取决于你项目的具体情况,比如规模,开发模式,是否需要重用大量的已有脚本等。

我在这个教程的前几篇里面,我尽量让大家站在高处看Flash MX 2004在数据库编程方面框架性的东西,知其然知其所以然,帮大家逐步分析每一个组件它的功能和MM为什么会推出这些组件,而不是其他的。在教程的最后我会给出一个比较复杂的例子让大家动动手。

这节,我们来分析Dataset这个东西,这是MX 2004数据库编程框架里面灵魂性的组件,是核心。MM的Flash 2004出来的很晚,故此它有机会从微软的.NET和Sun的J2EE中吸取了不少养分,

Dataset就是MM博采众长后搞出来的一个非常棒的数据库组件。

(1)Dataset的首要功能是在内存中部分或全部的缓存数据库镜像,缓存是提高数据库应用程序性能的最主要的途径,也是Flash应用程序区别于HTML类应用程序的一个重要特征,HTML是无状态(Stateless)语言,当你请求下一个页面的时候,前面的状态就不存在了,由服务器从新产生所有的状态,它的坏处很多,比如我们经常碰到这样的情况,某网站让你填大堆的注册信息,一页一页,好多页,你填到一半的时候,忽然网络延时,表单发不出去,怎么办?退回上一页吗?不行了,因为安全性的缘故,上一页已经过期(Expired)了,你进也不行,退也不行,怎么办?只好从头填起。还好你只是在填你的注册信息,要是你正在在线做笔交易,那方方面面的问题就大了。这也是HTML最被人诟病的地方,Flash 程序就没有这个问题,因为只要你不关了它,它的状态一直保持。Dataset就是用来保持本地数据库状态的一个很好的途径,网络延时或者暂时网络不通,没问题,咱等网络好了,再和远程数据库进行同步,你不用担心会丢失重要的数据。

(2)Dataset的另一个功能是将不同质的数据库同质化。比如一个大公司,以前它的各子公司各自为政,分别做了一套管理系统,数据区也千差万别,从Access, MySQL,SQLServer到DB2千七百怪的都有,总公司要统一做一套管理系统,但把所有数据库升级的代价很大,怎么办呢?我们可以在通过第二节所说的连接器,把不同数据源的原始数据读到Dataset中,那么对于客户端而言,数据源的差别就被弥合了,它们就被同质化,你就像操作单个数据库一样,方便得对多个数据库进行操作。

(3)数据格式转换,数据库里的原始数据往往不能直接显示,而需要经过转换,最简单的例子就是日期,数据库返回回来的日期往往是一串长长的精确到毫秒的甚至带有时区的字符串,通常你要对它处理一下,插进去“年”,“月”,“日”等符合国人阅读习惯的文字,在Dataset中,你可以对每一个字段指定一个编码(Encoding),它可以帮你把原始数据翻译成你想要的格式。你也可以订制编码器,比如:

if (积分 < 20)

return 菜鸟;

else

reutrn 老鸟;

这样“积分”这个字段通过编码器就被转换成了大家更能理解的文字。

(4)Dataset最强悍的功能当属它自动产生更新脚本这一项。通常的数据库应用程序,当用户做了一些修改后,你需要逐一的把它们更新到数据库里去,其过程用伪代码可能如下:

for (被修改的每一行)

如果它的状态是“新增”,就执行Server.AddNew(...)

如果它的状态是“被删除”,就执行Server.Delete(...)

如果它的状态是“被更新”,就执行Server.Update(...)

Dataset则不然,你把它里面的字段绑定到UI Component上后,在UI Component上做修改,Dataset会在相应的纪录(Record)和字段(Field)上做标志,然后当用户要求将修改保存到数据库的时候,Dataset把所有的修改打包,假设你事先已经将Dataset的dataPacket属性和XUpdateResolver的dataPacket属性绑定,那么当程序执行到resolver.ApplyUpdate()的时候,resolver会把DataSet的修改脚本转化成XUpdate命令发送到服务器,让服务器端程序执行相应的修改命令,并返回结果。

你有没有注意过DataHolder这个组件呢?我想看这个教程的大多数人都没有用过这个东西。我不是说它是一个和Dataset一样的非常核心的组件,但是如果你善用这个组件会有意想不到的效果。

我在学每个组件的时候都会问自己一个问题,为什么是它?MM在开发Flash MX 2004的时候,实际上网上已经有了针对Flash的大量形形色色的组件,MM在开发标准组件的时候,肯定要考虑到它要有广阔的适用范围,那么DataHolder这个玩艺儿有什么本事让MM把它纳入到标准组件里呢?在前面的几个教程里面,我一直在重复一个词:绑定。它可以让我们少写n多的代码,而且使程序易于维护。但是有些东西你没法通过绑定来实现,比如有一个文本框,它是某几个字段经过复杂计算后的结果,这时候,你一般要写些代码来手工修改这个文本框的内容。再比如,你调用一个传统的Web服务器脚本,来读取数据的时候可能需要传入参数,象这样

www.openvue.net/getOrderDetails.php?OrderID=233&CustomerID=8324

请注意,当你为XMLConnector设置这样的连接参数的时候,其中的OrderID和CustomerID在程序执行期间是要变化的,不是固定的,你可能需要在程序里面手工写一个字符串连接代码来设定正确的参数。

上面所说的不是一般的绑定能够实现的,DataHolder就是把这些“不可能的任务”变为可能。DataHolder相当于一个提供动态绑定的杂货铺,你可以在里面放任何东西,来提供绑定到其他组件的数据源,

以前面所举的两个例子做一下说明:

(1)有一个叫“总数”的文本框,它是一个叫“单价“的文本框和一个叫“数量”的NumericStepper(这个组件中文不知道怎么叫,不好意思)乘积,那么你设置一个DataHolder,它里面放三个变量,一个叫“UnitPrice ”(单价),一个叫“Quantity ”(数量)一个叫“Total ”(总数),把“单价“文本框绑定到“UnitPrice ”,把“数量”NumericStepper绑定到“Quantity ”,把“总数”文本框绑定到“Total ”,然后写一个触发器,当UnitPrice 或者Quantity 变化时自动计算Total:

var calculateTotal = function()

{

dataholder.Total = dataholder.UnitPrice * dataholder.Quantity;

}

dataholder.AddEventListener(“UnitPrice”, calculateTotal);

dataholder.AddEventListener(“Quantity”, calculateTotal);

好,现在当用户在“单价“文本框里输入数字,或者当NumericStepper里面的数值被改变时,“总数”文本框里面的数值会跟着变动。看上去还蛮智能的:)

(2)连接参数的动态绑定,拖个DataHolder到Form上,DataHolder中设置3个参数(OrderID,CustomerID和OrderDetailsURL),设置一个XMLConnector,他的URL绑定到DataHolder的OrderDetailsURL上面,然后为DataHolder写个触发器:

var generateURL= function()

{

dataholder.OrderDetailsURL= “www.openvue.net/getOrderDetails.php?OrderID=” + dataholder.OrderID + “&CustomerID=” + dataholder.CustomerID;

}

dataholder.AddEventListener(“OrderID”, generateURL);

dataholder.AddEventListener(“CustomerID”, generateURL);

这个有什么用呢,好,让我加入两个分别叫OrderID和CustomerID的文本框,这两个组件分别绑定到DataHolder中的OrderID和CustomerID,现在当用户在OrderID和CustomerID输入数字的时候你的程序就会自动产生合适的URL去到服务器上作查询,返回相应的OrderDetails。

篇3:嵌入式系统Flash编程技术研究论文

摘要:Flash存储器具有应用成本较低、存储速度较快、支持重复擦写功能,是目前很多嵌入式系统开发中不可缺少的重要内容。Flash编程方法的应用与系统开发进度、成本息息相关,因此,本研究主要以嵌入式系统为例,对Flash的编程方式进行分析,并介绍了新型Flash模式,力求编程质量与水平能够得到显著提升,使该技术在更多系统中得到广泛应用。

关键词:嵌入式系统;Flash编程;Flash存储器

21世纪作为信息时代,网络技术、智能产品层出不穷,渗透到社会生产与生活的方方面面。其中,嵌入式系统应用范围较广、可靠性较高、应用成本较低,在移动通信、自动化控制领域中得到普遍应用。在系统开发过程中,为保障系统程序可以反复载入,对内置存储器的要求较高,而Flash具有成本低、存储快、可重复擦写特征,因此,成为嵌入式系统中不可缺少的重要部分。

篇4:嵌入式系统Flash编程技术研究论文

在现实应用中,应用频率较高的Flash编程方法包括编辑器编程、普通接口编程与JTAG编程三种。

1.1编辑器编程

为实现Flash编程,专门开发和设计了编辑器,通过配套使用,便能将指令或数据写入其中。该方式较老旧,对实施条件的要求也较严格,必须保障芯片在焊接到电路板之前进行,等到编程结束以后再进行焊接。目前,较常见的编辑器类型有LABTOOL-48、SUPERPRO/V等。编程器编程的主要优势在于使用较便利,且编程效率较理想,十分适宜DIP封装的Flash芯片。

1.2普通接口编程

在实际应用过程中,嵌入式系统为充分发挥作用,通常会在硬件设计中加入一些外围接口,这些接口包括串口、USB、网络接口等。而在Flash编程中,便可以借助这些接口、串口直接实现。接口编程的方式与JTAG编程相比,没有对特殊接口进行要求。

1.3JTAG编程

JTAG作为嵌入式调试技术,其接口标准为IEEE1149.1,主要应用于边界扫描与端口测试中。同时,采用JTAG接口不但能够完成测试操作,还可以实现对嵌入式系统中的`Flash编程。在实际应用过程中,对JTAG进行编程操作应借助接口仿真器,将目标机与宿主机联系起来。在目标机上,将处理器与Flash总线相互连接,再借助宿主机中的既定程序,将数据、指令与控制信号均传送到JTAG接口芯片中。这时,处理器中将会接收到JTAG传递过来的信息,并按照Flash芯片进行编程,将接收到的信息写入其中,完成最终编程操作。与编辑器编程、普通接口编程方式相比,JTAG编程技术更为简便,无需对芯片焊接流程进行严格规定,只需借助JTAG借口线与仿真器便能完成测试,因此,嵌入式系统中Flash编程得到了广泛应用[1]。

2通过JTAG接口实施Flash编程的实例分析

在某项目开发设计过程中,采用JTAG接口完成Flash编程。在该设计过程中,JTAG的电缆与主机并口相互连接,另一侧连接到电路板中的JTAG插座上,再与处理器PowerPC405EP相连,Flash需要经过总线与处理器相连。在上述连接完毕以后,Flash无需具备JTAG接口,使用范围也更加广阔。在对Flash进行编程的过程中,PowerPC405EP由主机软件进行控制,利用其模拟Flash的编程时序,便能对Flash进行编程。

2.1硬件配置

第一,JTAG下载电缆设计。在JTAG接口标准的基础上,对信号逻辑电平中传输要求、数据、传输方向等进行综合考虑,最终选择采用并口标准与接口并行的模式,二者间关系如下:PC并口中管脚2的功能为D0;管脚3的功能为D1;管脚4的功能为D2;管脚5的功能为D3;在JTAG接口中,管脚TDI的功能为数据输入;TCK的功能为时钟;TMS的功能为模式选择;TRST的功能为复位;TDO的功能为数据输出。第二,嵌入式处理器PowPC405EP。在本系统设计中,采用的处理器为IBMPowPC405EP,属于一款32位、RISC指令集处理器,其性能较为良好,集嵌入式软核、外围设备系统SOC于一体。通过数据手册进行描述,得知BSR的长度与指令代码等内容,具体如下:指令Bypass,代码1111111;指令Extest,代码0000000;指令Sample,代码1111010。第三,Flash。在本系统设计中,使用的Flash为富士通SPANSIONMBM29DL,工作电压为3V,用户在使用之前,需要将特定地址写入到对应的指令序列中,便可以将其启动,使其在自动化下完成指令,包括复位、自动选择、擦除、编程等[2]。

2.2软件配置

编程算法可以划分为两个内容,一是写入编程命令序列,二是数据验证,本文只对前者进行研究。写入编程命令序列需要经过四个周期完成,前两个周期属于解锁周期,将AAh写入到55h中,再将55h写入到地址2AAh中,在第三个周期中,将A0h写入到0555h中,在第四周期中对地址与数据进行编程,Flash将自动完成编程命令。在第一周期中,使用的Flash数据线为AAh,也就是与Flash相连接的PowerPC405EP中的AAh,这时PerData0位为“0”。从PowerPC405EP的描述中能够看出,与之相对应的BSC单元号为24,部分源程序为:#definepinTDI1//输出端口位地址UnsignedcharOutport_State=0xF5//保存并口输出端口状态的全局变量writePort(pinTMS,0x00);sclk;//进入Run-Test-Idle状态;writePort(pinTMS,0x01);sclk();//进入Select-IR-Scan状态;writePort(pinTMS,0x00);sclk();//进入Shift-IR状态;writePort(pinTMS,0x01);sclk();//开始数据串行输入,将“0”输入到24号BSC中;writePort(pinTMS,0x01);sclk();//进入Update-DR状态,在TCK的下降沿,对24号BSC中的“0”进行驱动,使其传输到PerData当中,同时//flash也为“0”。

3新型的Flash编程模式分析

在实际应用过程中,由于Flash芯片在很多场景中均可使用,因此,命令集往往不尽相同,对此通常将整个编程模式划分为四个部分:最下层为硬件适配层,能够为上层提供读与写等基本功能,能够有效解决软件程序与硬件总线协调问题。第二层属于Flash适配层,主要作用是为上层提供Flash支持命令集,并通过公共接口发出响应。该层能够良好解决与Flash相关功能的指令时序与支持作用问题,且还应实现对各类事件与模式的转移。第三层为功能适配层,具有数据或指令读写作用,能够对Flash命令集进行封装操作,还可与上层之间相互联系。最上层便是适配层,与用户端相互连接,为用户提供高级交互接口。此种分层方式能够为编程操作提供极大便利,通过多层结构使高层与底层应用相互隔离,极大提高了程序开发质量,也为用户带来了更多功能与丰富的体验[3]。

4结语

本研究对Flash编程方式进行分析,借助嵌入式系统对Flash进行编程,编程速度较快、操作简单、复用率良好,充分符合嵌入式系统的发展趋势,同时也使系统开发投入成本降低,系统价值得到显著提高。另外,本文还介绍了一种新型的Flash编程方式,希望能够使其在系统开发中获得更广阔的发展空间。

参考文献

[1]高辉辉.基于PC-MBI模块的Flash编程技术研究[J].单片机与嵌入式系统应用,,15(9):7-10.

[2]吴延军.基于FLASH芯片的加密存储技术研究[D].广州:暨南大学,.

[3]康向艳.嵌入式路由器中基于NANDFlash启动技术研究[D].西安:西安电子科技大学,.

篇5:绘画技巧:用Flash画钢笔

技巧

今天给大家写个教程,主要讲述质感的表现问题,同时也想借此问下大家,我这么些做法是不是很傻.

步骤(在FlashMX里制作):

1 新建一个Flash文档.

2“插入”-“新建元件”,名为pen.

3将看到有一空白的图层,把该图层命名为“笔身表面”.

4用线条工具,箭头工具或者部分选取工具把笔身的形状勾出来,颜色可以不用管,因为最后线条是要删掉的.

5接着就是最让我头痛的颜色填充问题了.

5.1要体现质感,用渐变是比较好的,而且比较容易确定的要把笔身画成接近圆柱形的形状(笔尾部分除外),所以渐变是从上到下的线性渐变.接着渐变从上到下应该是深->浅->很深,首先从深到浅是因为光线射到圆柱的表面的时候,总有些地方是直射,而有些地方是斜射,所以对光的反射程度不同,而下面要很深是因为下面在自然情况下,是光通常比较难射到的地方.

(注明:以下颜色填充均是整个渐变区域跟形状区域重合,有特别说明的除外)

5.2但是我发现仅靠这个理论是不能很好地去指导我配色的.尝试了上面的渐变方法,发现根本就不能满足我的要求.

首先我要求很深的地方也不能太深,所以就先尝试了下面的这种颜色搭配(其中数字代表RGB值,Alpha均为100%)

这样画出了圆柱体的那种感觉,但是觉得表面不够光滑,光的反射还不强(可能笔尾那部分很不舒服,因为笔尾是椭球体,应该用放射填充,所以要另外处理).

为此,我把颜色的对比度稍微调大一点

虽然光感还是不强,但是我看到的实物,在白天,深色部分显得并不深,所以我不能把颜色调得更深.真是让我头痛啊!我再仔细地对着实物的钢笔观察一下,发现中间部分亮度应该再调大一些.

这次算是好了很多,但是整体感觉还是不够明亮.

5.3再观察了实物一遍,发现高光部分其实区域并不宽.是个很窄的线条,但是又不缺乏渐变.所以我尝试把中间的区域调窄.

光感强了很多,但实在很不像样,特别是找不到圆柱体的感觉.

把高光区域调宽,形状像圆柱体,但不光亮,想在光感和形状之间找到一个合适的平衡点实在很难,而且在这个平衡点附近,配出来的图形很难看.

再仔细地观察一遍.发现虽然高光区域跟非高光区域的颜色亮度差别比较大.但是高光区域附近有些地方还是比较明亮的,而且好像是高光区刺激眼睛的结果.所以,为了不影响圆柱体的形状,我尝试在较小的区域里调整高光.

我总觉得这么做很容易产生一种感觉,就是像一张纸条贴在上面一样,所以有点生硬.无论怎么调,在很窄的区域里,感觉就不像是发光,而是平面上贴个纸条.如果调整区域变宽,就会因为变化不够突然而缺乏强烈的光感.

5.4郁闷死了!怎么调才行啊?!

伸了下懒腰,扭了下脖子,但是眼睛始终凝视着那根钢笔,因为在我心里头,成功的决心一直没有动摇.

转身眨眼之间,脑海里多了两个钢笔的画面,一个是完全对着自然光时的形象,一个是光完全给我身子遮挡时的形象.一下子又不知道是什么感觉,但是有种直觉,就是两者之间只是差了那么一点东西,但足以影响钢笔在眼球中的质感形象.

于是我尝试让钢笔重新对着光,然后又完全把光挡住.嗯,的确就差一些东西.对了!就是一条光线,这条光线不是钢笔与生俱来的,而是天公赐予它的一缕阳光.阳光的力量赋予了钢笔以无穷的光辉.没有了它,钢笔将暗淡无光.

灵感来了!我只要先把圆柱体的感觉画出来,就可以很容易地画出钢笔无光照射时的那种感觉,然后,我再在表面另外添加一个发光条,就可以了,而且一点也不影响对笔形状有决定作用的渐变填充.简单来说,形状和光感两部分独立来处理,就可以解决两者间处理时的矛盾.

此时,找回最初配色最像圆柱的方案.

然后在此基础上加个高光区域.

下一页

学习三维造型软件个人总结

初中教案模板范文

初中教案

游戏数控技术制作中美术论文

写网站设计开题报告

Flash中的物理运动动画编程

信息技术教学工作计划高一

三维动画设计专业个人简历

计算机专业策划书范文

计算机网络技术简历自我评价

Flash编程绘画的简单运用
《Flash编程绘画的简单运用.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【Flash编程绘画的简单运用(锦集5篇)】相关文章:

信息技术教案32023-06-28

网页设计实习心得体会总结2023-05-05

法律咨询网的设计开题报告2022-08-24

关于电子商务专业大学生自我鉴定2023-11-08

新课程多媒体教学课件2022-05-07

电子商务专业学生的学习自我评价2022-05-06

旅游网站系统的设计开题2023-01-23

多媒体课件制作培训工作总结2023-01-28

优秀设计师简历自我评价2023-05-17

浅谈多媒体课件教学论文2023-07-29

点击下载本文文档