电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

Flash编程绘画的简单运用

来源:开心麻花作者:开心麻花2025-11-191

Flash编程绘画的简单运用(精选5篇)

Flash编程绘画的简单运用 第1篇

源文件下载:点击这里下载源文件(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绘画的朋友有所帮助。

Flash编程绘画的简单运用 第2篇

课程设想:Flash教学的设计初衷

一般而言,初中学生要在电子画板的硬件辅助和Painter的软件支持下进行电脑绘画学习。面对乡村学校没有电子画板的现状,我首先要考虑的是如何解决硬件上的缺憾。

1. 硬件弥补的可行性分析

由于不能使用电子画板,我先用鼠标代替了电子画笔,再配合软件来代替画板。起初,我选择入门版的画图软件,由于鼠标的敏感度不高和软件的限制,学生画出的都是粗糙的线条,作品后期无法修改,美感大打折扣。如果使用专业的Photoshop软件对线条进行弥补,对小学生来说又存在技术上的巨大挑战。所以画图和Photoshop两款软件都不适合。后来,我考虑过用奇弈画王或金山画王等软件代替,但在绘画创作方面,使用固有的插件会限制学生的思维,很难满足学生的个性需求。最后,我选择了以往用于动画制作的Flash软件作为绘画课程软件。因为Flash中的直线、椭圆等工具可以任意地更改形状,而不受鼠标或绘制的形状限制,这样学生就可以放开手脚,给创作带来更多的可能。

2. 学习难度的考虑

实验教学需要考虑到学生的接受能力和兴趣点。对于乡村小学生来说,电脑基础都比较薄弱。教师如果用Flash软件教学动画制作,因为其中涉及补间动画、场景、电影镜头等学习内容,难度会比较大。但如果将其作为绘画软件来使用,学起来会比动画简单得多。低年级学生可以在学会使用工具的基础上完成简单的绘画,而高年级学生在学习了元件、图层的概念后,又可以对作品进行大幅度的修改和美化。因此,把Flash作为绘画软件学习,学生的热情会比较高。

3. 教学资源丰富

好的课程离不开好的课程设计。在开课之前,针对教什么内容,我也进行了网络调查。我发现网络中有许多非常好的Flash学习内容可以参考,比如金鹰教程网、吕聪贤的视频等。在开课前,我自己也录制了许多适合小学生学习的微课来辅助教学,丰富的教学资源和设计可以激发学生的求知欲。

实际过程:意料之外的收获

课程进行了半年,学生的学习热情越来越高涨。在不断摸索中,我也总结了些许经验。

1. 多层次的学生共赢

使用Flash软件学习电脑绘画,适合于不同年级、不同层次的学生。学习的起点低,张力大。

三年级学生可以使用工具栏中最简单的几种绘画工具进行绘画。即使只学习了椭圆、矩形和选择三种工具,也可以直接在场景上画出图形,并对图形进行任意的变形和改造。因此,适合低年级学生初步使用,有助于他们发挥想象力和创造力。

随着操作水平的提高,高年级学生学习了元件和图层的概念,可以将整幅画分解为一个个元件,在元件中绘制局部内容,在不同的图层上重叠和布局。需要修改作品时,学生就可以分层、分元件修改,而不会“牵一发而动全身”了。这样的灵活性,使学生在创作作品时可以提高操作效率(如图1),它的低起点和高创造性,使其在绘画教学中大有可为。

2. 项目化学习帮助大

考虑到学生的年龄太小,社团采用了实例教学模式,以实例为主线,在实例中渗透功能和用法,从小项目到大项目逐步过渡。

在教学的前三个月里,我给学生提供了全套的微课实例教程。每节课一个小实例,学生当堂完成小任务,获得成就感。从第四个月起,学生试着创作自己的作品,完成一个大项目。创作伊始,学生先定好项目的主题、构图,在纸上画出草图。在明确目标后,请美术教师参与进来,从审美角度给学生提出宝贵建议。学生在创作中边学边做,一个月后,作品便大功告成了。

学生在此间经历了从模仿到创作的过程,他们在做中学,在项目化的学习中提高应用能力,逐步学会使用软件、创作作品。实验也证明了,小学生喜欢这样的学习方式。项目化的学习过程提高了学生的学习兴趣,他们的目标性更强,同时也培养了他们的组织协调能力、自我管理能力等综合素质。

3. 课程的延续

经过半年的学习,学生已经掌握了用Flash软件绘画的技巧。学生常常会说“我还想再做个作品”,会问“下节课我们要学什么”,学生越学越有信心,我也教上了瘾。于是,在小学阶段,我也大胆地开始了用Flash软件做动画的课程。

初中阶段Flash教学通常直接从动画技术开始学起,许多中学生一上手就能做出可以动的小习作。但在创作完整作品时,由于他们画功薄弱,人物形象绘制得不好,从而影响了作品的整体美感。这也是一直困扰初中老师和学生的问题——“故事情节很好,动画技术好,但作品美感不足”。

现在,我发现学生在小学阶段先学习绘画技术,到初中再学做动画,他们再也不会为画功问题而发愁了。教学需要循序渐进的过程,“积跬步”才能“至千里”。

课程反思:课程的启发

1. 教师的专业发展

陶行知先生曾说过,“要想学生好学,必须先生好学。唯有学而不厌的先生,才能教出学而不厌的学生。”就像上海特级教师马九克重新定义了Office软件一样,软件可以从教学的角度有更多的应用理解,这也体现出教师的专业性和对教学的个性理解。

毫无疑问,Flash软件是为动画而生的。但在特定的情况下,它还可以作为一种绘画软件来解决问题。乍看之下,软件好像“大材小用”了,但“合适的才是最好的”。作为信息技术教师,在理解一款软件的功能和用途时,也需要有一个再认识和再理解的过程。教师教给学生的不仅仅是知识本身,还要教给学生解决问题的方法。在外界不利的条件下,和学生一起找到解决问题的方法,这是教师需要思考和解决的问题。教师只有一步步地钻研专业知识,才能为教学注入新鲜血液。

2. 对教学的再认识:“积跬步,至千里”

实验初期,我用Flash软件教电脑绘画,是为了弥补乡村小学硬件不足的缺憾。换句话说,在可行的情况下,从软件方面找方法,放慢脚步一步步来。但后来学生爱上了Flash,根本停不下来。对学生来说,这是慢慢学习、步步领悟的过程。对老师来说,也让我领悟到“怎样教”才能让学生一步步地走得更稳、飞得更高。

“适合的才是最好的”。只有适合学生学情的教育,才能散发出迷人的光彩。只要方法得当,像中学教科书中才出现的Flash这样的软件,小学生也能够学得很出色。

图2是我与这些可爱的孩子们在一起。我喜欢这些可爱、直爽、渴望知识的乡村学生。

注释

Flash中的交互动画编程 第3篇

1.1 交互式动画

交互式动画发生在播放时, 简单来说是一种具备交互功能的动画。在动画播放时, 它能够对事件响应表现出支持态度, 即能够接受某种特定的控制。这里, 对动作操作的控制具有主观性与预先性。主观性是指控制是由动画播放者特定设计的, 预先性是指在制作过程中为达到动画播放画面清晰、能够正常播放的效果, 提前所做的某些准备工作。

其中, 交互性体现了人性化。传统意义上来讲, 观众作为动画作品的受众对象, 在动画播放观看过程中是被动的。但是, 交互式动画出现后, 观众也可以参与到动画播放中, 也可以对动画播放进行控制, 使得观众有了更加具有主动性的选择, 不用漫无目的地观看, 而是一种随心所欲地享受视觉效果。

1.2 Flash动画

Flash动画是交互式动画的一种形式, 是最为典型的一种动画形式, 观众可以实现对动画播放的控制。动画是借助设计者的创作思路理念与计算机信息技术为辅助发展而来的。随着设计者的创作思路理念逐渐突显出丰富性与灵活性, 同时计算机信息技术的快速发展, 出现了三维动画, 并日渐成熟, 从游戏领域逐渐过渡到电影领域, 或者在建筑工程、考古文物古迹复原等领域中都有着广泛应用。这也颠覆了传统动画播放的被动观念。具有控制性的交互式互动性特征的三维动画, 越来越发挥出在各个领域中的重要作用。

2 Action Script简单介绍

Flash由Adobe公司开发, 是一种用于网页动画开发的软件。它的内容由简到繁, 对于作品的创建具有一定的主观自由性。在应用程序中添加声音等, 使其媒体具有越加丰富性的特点[1]。而Action Script是脚本语言, 用于编程的一种语言, 具有丰富的类库与强大的功能等特点, 语法大致上与Java程序的Script有类似之处, 应用范围极为广泛。

3 以风扇制作为例, 分析Flash中的交互动画编程

3.1 鼠标对风扇开关与档次的控制

这个过程稍复杂, 共11步, 每个步骤都是重要环节, 是环环相扣的关系。因此, 每一个步骤都应认真对待, 否则将会影响整体效果。

第一步很简单, 是所有设计制作软件在使用中是我共同操作:新建文档。建立文档后, 进行页面设置。页面设置就像一张纸, 决定着可以容纳内容的多少, 这里将Flash文档的页面设置为宽:540像素, 高:420像素。在页面设置的时候, 需要所绘制的事物大小等特征符合客观性, 保证画面的美观。如果是平时练习可能会忽略这些, 但是如果是专业的交互式动画制作, 则必须注意。

页面工作区设置完以后, 还需要建立图形符号, 用于扇叶的绘制。再建立两个图形符号, 在绘制编辑区域里绘制外壳与罩子。为加以区分, 标注出哪个图形符号用于绘制外壳, 哪个图形符号用于绘制罩子。这里重点介绍的是编程, 对绘画步骤不加以详细讨论, 当然绘制效果因人而异, 具体的绘制内容效果还需要设计者的想象。

在Flash软件中, 图形符号是其中一项基本元件。当调入位图时, 要将位图置于图形符号当中, 这是由于其符号本身具有一定的属性。位图要与这些属性相匹配, 这是将位图放置于图形符号中的重要原因, 然后根据属性进行调整。

建立与设置完图形符号后, 就是影片剪辑环节。首先, 建立影片剪辑的文档, 为剪辑工作创造工作区域, 将建立的影片剪辑命名为n1, 表示建立的第一个影片剪辑, 以此类推。在建立的第一个编辑区域里, 使用鼠标单击第1帧, 把设置好的扇叶符号放置编辑区内, 然后在40帧的区域内单击。单击鼠标右键, 会出现很多指令功能对话框, 其中有一项是“插入关键帧”, 选择这个指令, 将其插入在刚才设置的第40帧中。再次对第1帧进行单击, 同样单击右键操作, 点击“创建补间动画”这个选项, 在属性面板中有一个“旋转”选项, 在该选项中将扇叶的转动方向设置为顺时针, 默认旋转次数为一次。同时, 根据需要对扇叶转速由动画帧数、旋转次数而定[2]。

上面的操作完成后, 各元件的编写程序正式开始。在n1的基础上进行复制, 生成一个相同的影片编辑, 命名为n2, 也就是第二档。按照同样的方法, 根据需要对n2编辑区的旋转次数与动画帧数进行设置。需要注意, 转速要比n1快一些。为了更加简便, 突出重点, 对编辑制作步骤不一一介绍。为了使读者一目了然, 这里只论述n1与n2两个档位的制作, 具体的其他档位可根据具体情况而定。

回到场景设置编辑区域, 单击第1帧, 此时将外壳置于场景的中间位置, 即拖入场景中后将其在页面中的位置设置为居中。再建立一个新的图层, 同样单击第1帧, 在公用库里找出3个数量的按钮, 安放在外壳右边。按钮也是Flash软件中的一种基本元件, 外观形式并不局限于一种, 而是多种多样。编写程序后, 按钮对鼠标事件具有明显的敏感性, 对鼠标事件做出作出正确的响应, 对动作脚本按照特定的形式执行。可见, 按钮对于交互式动画的实现具有重要作用, 是其中一项重要的关键对象。

建立新图层, 命名为n2 (之前相同命名的是影片剪辑, 这里是图层, 如怕混淆, 可以将图层命名改为其他名字) , 进行第1帧的单击, 选择恰当位置将n2影片剪辑拖入这个图层中, 同时在n2图层的基础上再建立一个新的图层, 命名为n1。进行第1帧的单击, 拖入n1影片剪辑的操作, 使其在场景中能够将n2影片剪辑完全覆盖。在这个过程中, 注意对图层加以区分。每个图层对应一定的操作, 如果混淆图层, 导致操作与图层没有对应, 再进行修改是一个非常麻烦的过程。

建立第三个图层, 命名为n3。同样的方法单击第1帧, 选择恰当的位置将罩子拖入场景。

在n1影片剪辑中, 属性面板中有实例名称的选项, 填写为“n1”。按照同样的方式将n2影片剪辑填写为“n2”, 以区分分身。在动作面板中选中场景中的n1影片剪辑, 添加代码。

然后, 开始对停止命令的设置。选中颜色为黄色代表停止运动的按钮, 并将停止运动的相应代码添加在动作面板中, 输入正确代码后, 单击与停止运动命令的按钮时, 风扇处于停止运动状态。这里编写了on事件处理函数, 针对鼠标事件选用Press事件。当通过按键激发这个事件时, 计算机会执行繁琐的程序语句, n1与n2影片剪辑会出现播放停止的状态。

第十步选中第一档按钮, 颜色为绿色的按钮, 同样将代码添加至动作面板中。这样设置编程是为了风扇在单击按钮后, 能够在第一档转动[3]。

最后一步选中第二档按钮, 颜色为蓝色的按钮, 同样将相应的代码添加至动画面板中。这样编程是为了在档位中单击按钮后, 风扇能够转动。

经过上面论述, 就可以以若干简单语句, 通过鼠标控制风扇的开关动作, 进行档位之间动作的转换, 实现通过计算机交互的动画。

3.2 键盘对风扇开关与档次的控制

返回到第八步, 选取n1影片剪辑, 添加代码, 通过代码编程赋予数字键盘一定的功能, 便可敲击编程所设置的数字键。通过数字键盘的敲击输入相应数字, 就可以实现风扇停止运动。运用恰当函数, 通过if语句, 利用代码语句的设置, 赋予风扇运动状态的功能。这样实现了通过按键对风扇运动状态的控制。不同的数字键代表不同的意义, 这样可以通过按键实现对交互式动画的控制。

4 结语

综上所述, 本文从三个方面对Flash中的交互动画编程展开论述。第一部分对交互式动画与Flash动画进行简单介绍, 增加了Flash交互式动画的了解认识。第二部分是对Action Script的简单介绍。Action Script是一种脚本语言, 是Flash交互式动画编程的基础。最后一部分具体以风扇的制作为例, 对其动画编程过程展开论述。Flash动画编程分为多个步骤, 整个过程复杂, 因此在具体编程中需要梳理步骤, 注意对每个步骤每个细节的处理, 并遵循客观规律, 以时编程制作出来的动画符合逻辑关系。

摘要:Flash是一款网页动画开发软件, 在网站中网页动画制作中有着广泛应用, 能够设计制作出具有交互式性质的动画。而这些动画通常是以运动的图像对网页内容进行说明解释或者吸引人们的注意。本文以Flash交互式动画为研究对象, 对其动画编程展开论述, 旨在能够为广告、动画学习者与工作者的具体实践提供一定的帮助。

关键词:Flash,交互动画,编程

参考文献

[1]亓文娟.基于Flash的辅助教学动画设计与实现[J].安阳工学院学报, 2015 (4) :97-99, 107.

[2]梁燕.强化教学互动, 培养思维品质——《交互动画编程》多媒体教学有感[J].信息与电脑 (理论版) , 2014 (4) :225.

Flash编程绘画的简单运用 第4篇

随着电子技术的迅速发展, 芯片以及系统越来越复杂, 体积越来越小, 系统测试、故障排除的难度和成本不断增加, 边界扫描技术为以上问题提供了一个行之有效的解决途径[1]。IEEE 1149.1标准俗称JTAG调试标准, 最初由JTAG (Joint Test Action Group) 小组提出, 最终由IEEE批准并标准化。人们一般用JTAG代表IEEE 1149.1规范。JTAG调试标准极大的推动了边界扫描技术的发展, 在电子产品设计及调试的各个阶段得到广泛应用。

2 JTAG调试原理

2.1 边界扫描技术

边界扫描是边界扫描技术的核心概念, 其基本思想是在芯片的输入输出管脚上增加一些边界扫描寄存器单元 (Boundary-scan Register Cell) , 边界扫描寄存器单元其实是移位寄存器单元。芯片有两种工作状态:调试状态和正常运行状态。调试状态下, 边界扫描寄存器单元将芯片与外围的输入输出隔离开, 通过这些边界扫描寄存器单元可以实现芯片输入输出信号的观察与控制。对于芯片输入管脚, 通过与之相连的边界扫描寄存器单元可把信号加载到该管脚中去;对芯片输出管脚, 通过与之相连的边界扫描寄存器单元可实现对该管脚上的输出信号的捕获 (capture) 。正常运行状态下边界扫描寄存器单元对芯片来说是透明的, 对芯片的正常工作不会造成任何影响[2]。这样边界扫描寄存器就提供了一个便捷的方式实现芯片输入输出信号的观察和控制。此外, 芯片输入输出引脚上的边界扫描寄存器单元可以相互串起来在芯片周围形成一个边界扫描链。一般芯片中会提供几条边界扫描链, 实现数据的串行输入和输出, 在时钟信号和控制信号的作用下, 方便地观察和控制调试状态下的芯片。

2.2 TAP (Test Access Port)

边界扫描链可实现数据的输入输出, 从而实现对芯片的观测与控制。TAP是一个通用端口, 并在IEEE1149.1标准中定义, 实现对边界扫描链的控制。IEEE1149.1标准里, 寄存器分为数据寄存器 (DR) 和指令寄存器 (IR) 。边界扫描链只是数据寄存器中的一种。TAP提供了4个强制信号TDI、TDO、TMS、TCK和一个可选信号TRST。通过这些控制信号实现对数据寄存器DR和指令寄存器IR的访问。JTAG结构示意图如图1所示。

(1) TCK (Test Clock Input) TAP时钟驱动信号。

(2) TMS (Test Mode Select) TAP的模式选择信号, 用来控制状态机的转换。

(3) TDI (Test Data Input) 数据串行输入接口。

(4) TDO (Test Data Output) 数据串行输出端口。

(5) TRST (Test Reset Input) TAP Controller复位信号。

TAP是芯片与仿真器的接口, 对芯片的任何访问都是通过TAP来实现。TAP Controller通过TMS控制信号和TCK时钟驱动信号实现状态转换, 其状态转换机如图2所示[3]。状态转换机共有16个状态, 每一个状态在TCK上升沿根据TMS信号的高低电平来决定是否进入下一个状态。

通过TAP访问数据寄存器DR的步骤为: (1) 通过指令寄存器IR选择待访问的数据寄存器; (2) 指定的数据寄存器连接在TDI和TDO之间; (3) 在时钟信号TCK的驱动下, 由TDI实现新数据输入, 由TDO实现数据输出[4]。

3 ARM920T调试系统

ARM920T处理器与调试相关的模块有:ARM CPU core, 提供调试的硬件支持;Embedded ICE, 产生调试中断, 设置断点和观察点;TAP Controller等。

ARM920T常用扫描链[3]:

Scan chain 0 长度为184 bit, 可实现芯片连接检查和芯片内部逻辑测试。

Scan chain 1长度为67 bit, 其中包括32 bit数据位, 32 bit指令位和3 bit控制信号。

Scan chain 2可访问EmbeddedICE中的硬件寄存器。

Scan chain 3长度用户自定义, 可以访问外部边界扫描链。默认使用的扫描链。

Scan chain 6包括32 bit数据位, 7 bit地址位, 1 bit读写控制位, 可对ETM9中的寄存器编程。

ARM920T中常用指令有:IDCODE (b1110) 主要用来读取CPU ID号;SCAN_N (b0010) 主要用来实现不同扫描链的选择, ARM920T默认选择扫描链3;EXTEST (b0000) 将扫描链置于外部测试模式;INTEST (b1100) 将扫描链置于内部测试模式;RESTART (0100) 使ARM920T处理器由调试态返回正常运行态。

4 烧写系统实现

NAND Flash烧写系统分为硬件系统和软件系统。硬件系统负责JTAG协议转换, 实现对TAP的硬件控制;软件系统负责JTAG工作时序的模拟以及TAP的软件控制, 是烧写系统的核心。

4.1 硬件实现

一般JTAG仿真器并不具有Flash烧写功能, 且其价格比较昂贵, 因此文中采用了目前较为流行且比较简单的WIGGLER小板, 实现JTAG Flash在线烧写的硬件支持。这种WIGGLER小板是一种简易并口JTAG, 可方便地实现并口对TAP的直接控制。硬件原理图如图3所示。其中74HC244是三态缓冲器, 其作用是实现电平转换。

4.2 软件实现

软件系统总体上分为四个层次:并口驱动层、JTAG控制层、数据处理层以及应用程序层。软件的层次结构图如图4所示。

并口驱动层实现软件最底层的操作, 本软件基本思想就是通过对PC机上标准并口的直接操作实现对TAP的控制, 从而达到观测和控制芯片的目的。JTAG控制层是整个软件的关键部分, 它利用并口驱动层底层操作接口, 实现TAP操作和状态机不同状态的循环控制。数据处理层相对于底层和上层的功能, 可视为数据处理缓冲层, 这一层并没有牵扯到任何底层的操作, 仅是为了方便应用程序的实现, 定义了一些关键的数据结构和数据处理函数。应用程序层是软件核心功能实现层, 主要实现了NAND Flash工作时序的软件模拟以及有关的读、写及擦除等操作。

4.2.1 Linux下并口操作

Linux程序运行在保护模式下, 不能直接对并口进行操作, 可通过函数调用ioperm (unsigned long port, unsigned long num, bool on_off) 来获得并口的访问权。参数port代表要访问并口的地址, 在程序中共定义了三个并口地址:#define LPT1 0x378、#define LPT2 0x278、#define LPT3 0x3bc;参数num代表连续的端口数目, 一般包括数据寄存器端口、控制寄存器端口和状态寄存器端口;逻辑变量on_off代表对端口操作方式, 1代表打开, 0代表关闭。并口可用性可通过向端口写入数据再读回数据的方式来检查, 读回的数据如果和写入的数据相同则端口可用。并口驱动层提供的访问接口有:

int Getvalidppt (void) //取得可用并口地址

void Setpptcompmode (void) //设置并口工作模式

此外还有两个宏定义:

#define Outputppt (value) outb (unsigned long validport, value) //并口数据输出

#define Inputppt () inb ( (unsigned long) (validppt+0x1) ) //并口数据读入

4.2.2 JTAG控制层

JTAG控制层主要实现TAP Controller控制, 其中涉及TCK、TMS、TDI、TDO四个控制信号和状态机的实现。输出信号控制接口由如下宏实现:

#define JTAG_SET (value) Outputppt (value)

其中value为输出数据, 组合模式为TDI|TMS|TCK, TDI、TMS、TCK分别有两种状态, 如:TDI_H, TDI_L;TMS_H, TMS_L;TCK_H, TCK_L, 分别代表三种信号的高低电平。

输入信号 (TDO) 接口由如下宏实现:

#define JTAG_GET_TDO () ( (Inputppt () & (1<<7) ) LOW:HIGH )

TDO输出信号与状态寄存器第7位相连, 此位使用了反相器, 故在读入数据时需要取反。

JTAG控制层利用TAP Controller状态控制机主要实现数据的输出与输入、指令的输入、CPU ID号的读取等功能。主要的接口函数有:

void JTAG_Shiftdrstate (char *wrDR, char *rdDR) ;//同时实现数据输出与读入

void JTAG_Shiftdrstatenotdo (char *wrDR) ;

void JTAG_Shiftirstate (char *wrIR) //指令输出

void JTAG_Readid (void) //读取CPU ID

访问指令寄存器的状态转换流程为:

Run-Test/IdleSelect-DR-ScanSelect-IR-ScanCapture-IRShift-IRExit-IRUpdate-IRRun-Test/Idle

数据寄存器由指令寄存器中的当前指令决定, 访问数据寄存器的状态转换流程为:

Run-Test/IdleSelect-DR-ScanCapture-DRShift-DRExit-DRUpdate-DRRun-Test/Idle

函数JTAG_ShiftDRState () 同时实现数据读入、读出, 其程序流程图如图5所示。

4.2.3 数据处理层

边界扫描单元在使用前需要初始化, 边界扫描单元的数目即为边界扫描链的长度, s3c2410处理器的边界扫描链的长度为426。处理器的每个引脚都对应一个边界扫描单元, 每个引脚可视为边界扫描单元的索引, s3c2410处理器有272个引脚。对边界扫描单元的初始化即是对处理器引脚赋初值。初始化数据放在边界扫描链数组中, 有如下定义:

char outcelldata[SC2410_MAX_CELL_INDEX+2];

char incelldata[SC2410_MAX_CELL_INDEX+2];

数组outcelldata[]存放待输出数据, incelldata[]存放读入数据, 数组的每个单元对应一个边界扫描单元。其中SC2410_MAX_CELL_INDEX为s3c2410处理器边界扫描单元的数目426。

s3c2410处理器数据宽度为32位, 地址线27位, 为便于数据、地址统一处理, 定义如下三个数组:

int dataoutcellindex[32];

int dataincellindex[32];

int addrcellindex[27];

数据输出与读入对应不同边界扫描单元, 如:DATA0读入对应的扫描单元索引为100, 输出对应的扫描单元索引为99。将数据输出扫描单元的索引组合到具有32个元素的数组 (dataoutcellindex) 中, 便于数据输出扫描单元的引用;将数据读入扫描单元的索引组合到具有32个元素的数组 (dataincellIndex) 中, 便于数据读入扫描单元的引用;将地址输出扫描单元的索引组合到具有27个元素的数组 (addrcellindex) 中, 便于地址输出扫描单元的引用。如数据位DATA0要输出低电平, 数组的引用方式为:

outcelldata[dataOutCellIndex[0]]=LOW;

从DATA0读入一位数据, 数组的引用方式如下:

incelldata[dataInCellIndex[0]]=JTAG_GET_TDO () ;

数据处理层主要接口函数有:

void SC2410_Initcell (void) ; //边界扫描单元初始化

void SC2410_Setpin (int index, char value) ;//处理器引脚电平的设置

char SC2410_Getpin (int index) ; //引脚信号的读入

void SC2410_Setaddr (U32 addr) ; //设置地址数据

void SC2410_Setdatabyte (U8 data) ;//写字节数据

U8 SC2410_Getdatabyte (void) ;//读字节数据

4.2.4 应用程序层

应用程序层主要实现NAND Flash的读、写及擦除等上层操作。以K9F1208为例, NAND Flash一般的操作流程是:先向Flash芯片发操作命令, 再发操作地址, 如果Flash芯片准备就绪再进行数据的读/写或芯片的擦除等操作。K9F1208主要控制信号有:CLE (芯片命令锁存, 高电平有效) 、ALE (地址锁存, 高电平有效) 、WE (芯片写操作, 低电平有效) 、RE (芯片读操作, 低电平有效) 、CE (芯片使能) 、R/B (芯片状态指示, 高电平代表芯片就绪, 低电平代表芯片忙) ;IO (0~7) 数据输入/输出端口。程序主要接口函数有:NF_CMD () 实现Flash写命令操作;NF_ADDR () 实现Flash地址输出;NF_WRDATA () 实现数据写;NF_RDDATA () 实现数据读。参考K9F1208芯片写命令操作时序, NF_CMD () Flash写命令函数实现为:设CE片选信号有效;命令锁存信号CLE有效同时无效地址锁存信号ALE;写信号WE有效同时无效读信号RE;输出命令;最后无效WE信号实现命令锁存。其他相关函数的实现都是以软件的方式模拟NAND Flash的硬件工作时序, 其实现方法与Flash写命令函数NF_CMD () 相似。

4.3 测试及实验

烧写软件在Linux系统下编译成功, 在命令行输入:./zjx_sjf_linux /f:interrupt.bin, 烧写程序开始运行, 运行界面如图6所示。其中zjx_sjf_linux是应用程序名, /f:为命令行参数, interrupt.bin为待烧写程序。

图6表示程序能够成功运行且能够实现程序在Linux系统下的烧写。

5 结束语

本文研究了JTAG标准和ARM920T, 介绍了NAND Flash在Linux系统下的烧写系统的软硬件实现方案。硬件采用了简易并口JTAG, 软件部分则给出了系统的设计架构, 功能模块及其实现接口。并口JTAG烧写Flash, 速度上会有较大的限制, 接下来进一步的工作就是改善Flash的烧写速度, 提高Flash烧写效率。

摘要:在研究了JTAG调试原理和ARM920T调试模型的基础上, 提出了Linux系统下NAND Flash在线烧写系统的软硬件实现方案。硬件采用简易并口JTAG实现电平转换, 实现并口对TAP直接控制;软件采用四层次模型:并口驱动层, 实现软件底层驱动;JTAG控制层, 实现TAP操作及状态机控制;数据处理层以及应用程序层, 实现软件上层主体功能。程序在Linux系统下成功编译, 并成功运行, 实现了Flash的在线编程。

关键词:Linux,JTAG,Flash,烧写系统

参考文献

[1]赵铁峰, 王凯, 王为民, 等.基于ARM微处理器的智能控制器[J].化工自动化及仪表, 2005, 32 (1) :77-78.

[2]IEEE1149.1.IEEE standard test access port and boundary-scan architecture[S].2001.

[3]ARM Corp.ARM920T Technical Reference Manual[EB/OL].http://www.arm.com.

Flash编程绘画的简单运用 第5篇

1从游戏中来, 到游戏中去, 激发学生的兴趣

《FLASH游戏编程精品课程》是中专课程中综合能力要求比较高的课程, 要求学生既要有逻辑思维能力, 又要有Flash功底, 更需要一定的审美观念。学生如果对该课程没有兴趣, 一定是学不好的, 会导致越学越难, 学到后面大部分学生容易放弃学习的。怎么样才能激发学生的学习兴趣呢?

俗语说的好“兴趣是最好的老师”, 因此如何提高学生的学习兴趣是非常关键的。中专的学生普遍都喜欢玩游戏, 甚至有个别学生当初选读计算机专业就是以为学习计算机专业就能更好地玩游戏, 普遍的玩家心态都是要赢。因此我在上课时就抓住学生“要赢”的游戏心态, 课前导入就让学生尽情地去玩本次项目的游戏, 并且要求学生玩游戏过程中一定要认真去玩, 想方设法完成游戏任务。学生玩完游戏后, 先问学生游戏是否好玩, 是否有可以更完善的地方, 想不想自己开发游戏, 想不想自己开发个比这个游戏更好玩的小游戏, 在其他同学面前威风一下。抓住学生的好奇心、好胜心, 逐步引导学生分析编写游戏的技巧、游戏任务的过程以及游戏输赢的逻辑思维, 这样学生的思维得到了锻炼, 对游戏的逻辑才会理解的更加清楚。当学生深深被游戏吸引, 将学生玩游戏的兴趣慢慢引导转变为编写游戏的学习兴趣, 自然而然就激发学生对游戏编程的兴趣。当学生学习有兴趣了, 就要趁热打铁教学生如何设计场景, 如何设计任务角色, 如何使用编程语言让游戏实现起来。慢慢地, 学生就从玩游戏的角色转变到设计开发游戏的角色中去, 当学生设计出游戏时, 自己玩着自己开发的游戏时, 学生体会到了成功的喜悦, 进而更加喜欢上这门课程, 进行良性循环, 越学越有兴趣, 越学越好。

2化整为零, 循序渐进

成功正是一个化整为零、循序渐进的过程, 并非一蹴而就的坦途。比如一个普遍的现象:当大家对接受的任务太多, 太难时, 很多人容易颓废, 容易产生了焦虑心理, 进而选择暂时逃避, 明天再做吧。明日复明日, 一拖再拖, 最终完成不了。学生学习也是如此, 如果一开始也是给很重很难的学习任务, 学生就算有了兴趣, 也很难坚持学习下去。俄国大文豪托尔斯泰曾说过:“人要有生活的目标:一辈子的目标, 一个阶段的目标, 一年的目标, 一个月的目标, 一个星期的目标, 一天的目标, 一小时的目标, 一分钟的目标, 还得为大目标牺牲小目标。”为了不让学生放弃学习, 我将学习目标分解, 任务分成比较容易的小块, 化整为零, 降低任务难度, 通过完成一个又一个的小目标来不断激励学生, 逐一跨越, 最终完成整体目标。

《FLASH游戏编程精品课程》的游戏设计的确不容易, 学生学习起来是一个很艰难的过程, 如果一下子灌输太多东西, 学生就很容易跟不上教学的进度。所以在上课的时候, 我会将一个个项目进行化整为零, 将整体分解成一个个简单易懂的步骤或者环节, 学生掌握了一个步骤后再进入下一个环节。当所有步骤都学习完成后, 进行整合, 将这些步骤串联起来, 形成一个整体。学生在专业的学习中, 不会感受到项目的艰难, 觉得有深度的递进, 有挑战, 进而顺利地完成项目的设计。

3注重逻辑思维的培养

逻辑思维是借助于概念、判断、推理等思维形式所进行的思考活动, 是一种有条件、有步骤、有根据、渐进式的思维方式。游戏项目的完成, 需要很强的逻辑思维, 如果学生本身逻辑思维比较混乱, 就算在老师的指导下, 同学的帮助下勉强完成了游戏的设计, 一旦让他自己独立再设计其他游戏, 一定设计不出来。因此, 在游戏编程课中, 非常注重逻辑思维的培养, 培养方法有:

3.1培养思维敏捷性和灵活性。在游戏编程教学中要充分重视教材中例题和练习中实现的方式方法是多样的, 哪种才是最好的, 哪种才是比较容易编写出来的, 哪种才能让玩家知道如何玩的, 哪种方法实现起来比较容易等等。指导学生通过分析和对比, 拓宽思路, 选择最佳思维, 从而培养学生思维的敏捷性和灵活性。

3.2培养思维的广阔性和关联性。教学中注意相关知识之间的关联性, 可以培养思维的广阔性和深刻性。比如这个项目和前面的项目有哪些相似的地方, 哪些代码是可以重复使用的, 哪些代码可以借鉴使用的, 如何进行功能的复用等等。在《FLASH游戏编程精品课程》的讲解中, 引入思维导图进行讲解, 进一步让学生有更强的直观性和关联性, 进一步拓宽学生的思路, 培养思维的广阔性。

3.3培养思维的独立性, 鼓励思维创新。教学最终的目的是教会学生能够进行独立学习, 独立思考问题, 以后工作、学习遇到问题, 能够独立分析问题, 解决问题。当学生学习到了一定程度后, 需要开发学生的创新思维, 要让学生在新的编程中学会独立思考问题, 如何设计更好的游戏界面, 设计更好的游戏功能, 设计更复杂好玩的小游戏等等, 培养学生的思维独立性和思维创新性, 有助于学生的个人成长, 将来才有机会成为出色的游戏开发者。

通过激发学生学习兴趣, 恰当分解难度, 突出培养学生的逻辑思维, 使得学生对游戏编程课越来越喜欢, 并且期末的进行创造游戏的时候, 很多学生创造出很出色的游戏。

通过《FLASH游戏编程精品课程》的教学反思, 不断提高了该课程的教学效果, 将这个反思的策略应用于其他课程教学中, 也取得了很好的教学效果。

摘要:教师的成长=经验+反思, 通过不断的反思, 教师才能不断地成长。在《FLASH游戏编程精品课程》精品课程建设的三年中, 通过教学反思, 深刻意识到通过游戏导入能更加吸引学生的学习兴趣;通过将大的任务进行化整为零, 将目标进行分解, 降低目标难度, 更能循序渐进进行教学;通过培养独立思维和创新思维能力, 进一步提升了学生对课程的设计能力。通过教学反思, 提高了教学效果, 这个反思也适用于其他课程的教学。

关键词:教学反思,游戏,兴趣,化整为零,逻辑思维

参考文献

[1]王寰宇.教育探索[J].影响教师教学反思能力的因素研究.

[2]李淑文.教育理论与实践[J].论创新思维培养的方法.

Flash编程绘画的简单运用

Flash编程绘画的简单运用(精选5篇)Flash编程绘画的简单运用 第1篇源文件下载:点击这里下载源文件(7K, winzip压缩文件)效果预览:圆形1...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部