flash论文(精选11篇)

如何制作flash游戏论文

       如何制作flash游戏论文

       1 系统制作软件简介

       Flash是一种交互式动画设计工具,用它可以将音乐、声效、动画以及富有新意与创意的界面融合在一起,以制作出高品质的动画游戏效果。Flash使用矢量图形和流式播放技术,与位图图形不同的是,矢量图形可以任意缩放尺寸并且不影响图形的质量,生成的影片文件所占体积小;流式播放技术使得动画游戏可以边播放边下载,从而缓解了玩家焦急等待的情绪。Flash游戏的算法实现,主要依赖于脚本即Flash自身的ActionScript语言,它是一种面向对象的程序语言,它可以控制Flash中的对象,创建各种元素,扩展Flash的交互能力和应用能力,将ActionScript使用好,将是游戏制作成功的关键。使用Flash制作的游戏拥有各种分类,最常见的类型主要有3类,即:动作类(ACT),解谜类(AVG)与角色扮演类(RPG)。

       2 需求分析

       我们知道,很多人长时间地待在一个地方一刻不停地工作,很难得到适当的休息,即使有空余时间休息,休息的时间也比较短暂,如果有不需要花太多时间、能速战速决的游戏,那么我们就可以在短时间内获得放松,因此有必要开发一个小型的Flash动画游戏。按类型分类,五子棋游戏应该归类于解谜类游戏(AVG)之中的休闲小类,它是一种两个人对弈的纯策略型棋类游戏,属于益智型游戏,起源于中国古代的传统的黑白棋种之一。最初是在日本发展起来的,在欧美比较流行。它简单易懂,操作方便,适合工作学习之余想要放松自己的.人群,同时也适合于对儿童进行逻辑思维能力的培养锻炼。

       3 游戏总体设计

       3.1 游戏结构设计

       经过上面的需求分析,此五子棋游戏系统应包含系统初始化模块、下棋模块和结束模块3大功能模块,其中下棋模块又包含初始化棋盘模块、玩家下棋模块和电脑下棋模块3个子模块。功能分别描述如下:

       (1)系统初始化模块:显示游戏规则,并进入游戏。

       (2)下棋模块:为电脑和玩家绘制且显示棋子,并为电脑分析最佳位置。

       (3)初始化棋盘模块:设置电脑在棋盘中间固定位置下一个白棋子,并提示玩家接下一个棋。

       (4)玩家下棋模块:为玩家绘制并显示一个黑棋子。

       (5)结束模块:判断并显示输赢,然后重新开始或退出游戏。

       3.2 游戏运行流程

       游戏运行之后会显示游戏规则,在此处点击进入游戏按钮即可开始游戏。首先会初始化棋盘,电脑会下2:flash上传

       flash上传

       是不是真为没地方上传你做的flash而发愁呢...没事,往这看吧..

       我给大家提供2个可以上传flash的空间!!

       3:积少成多Flash

       积少成多Flash(10) - Flex 3.0 状态转换(State), 状态转换的过渡效果(State Transition), 自定义鼠标指针

       介绍

       演示 Flex 3.0 中的转换状态及转换状态中的过度效果,自定义鼠标指针

       状态转换(State) - 对 UI 状态,以某一种编程模型做转换

       状态转换的过渡效果(State Transition) - 设置 UI 状态的转换过程中的过 渡效果

       自定义鼠标指针 - 对鼠标指针的样式做自定义设置

       在线DEMO

       .cnblogs.com/webabcd/archive//11/09/1598980.html

       1、演示 State 的应用

       State.mxml

       <?xml version=“1.0” encoding=“utf-8”?>

       2、演示 State Transition 的应用

       StateTransition.mxml

       <?xml version=“1.0” encoding=“utf-8”?>

       3、演示如何自定义鼠标指针

       Cursor.mxml

       <?xml version=“1.0” encoding=“utf-8”?>        积少成多Flash(10)

,(另一种以字符串的形式引用内嵌资源的方式:@Embed('images/logo.png')) [Embed(source=“images/logo.png”)] private var customCursor:Class; private function cursorChange(e:Event):void {switch (radioGroup.selectedValue){ // 正常时候的鼠标指针 case “Normal” : CursorManager.removeAllCursors; break; // 繁忙时,鼠标指针的样式 case “Busy” : CursorManager.removeAllCursors(); CursorManager.setBusyCursor(); break; // 自定义鼠标指针的样式 case “Custom” : CursorManager.removeAllCursors(); CursorManager.setCursor(customCursor); default : break;} } ]]>

       OK

       来源: .cnblogs.com/webabcd/archive/2023/11/11/1600874.html

篇4:flash怎么使用

       

flash的使用方法

       5:Flash AS常用代码

       1、用flash 做那种弹出的小窗口

       分两步:

       给flash中的按钮加入如下action:

       on (release) {

       getURL (“javascript.:MM_openBrWindow('newweb.htm','','width=600,height=100')”);

       }

       在HTML页面的...之间加入下面的javascript代码.

       2、如何使得flash一打开就是全屏?

       fscommand(“fullscreen”,true)

       如何不能使用右键?

       fscommand (“showmenu”, “false”);

       3、用命令载入一个动画,我需要确定载入动画在画面中的位置,用什么语言来设置?

       例如载入名为dd.swf的动画,我要确定这个动画的中心位置在(205,250),该怎么设置?

       在要加载动画的那钟加入

       loadMovie(“dd.swf”, “a”);

       a._x=205;

       a._y=250;

       你得先做一个空的MC起名叫“a”,导入时,在右下角也起名为a

       4、当鼠标经过时动画播放到某处

       on (rollover) {

       gotoAndPlay(10);

       }

       当鼠标按下时动画播放到某处

       on (release) {

       gotoAndPlay(1);

       }

       5、播完动画后自动跳到某网页

       getURL(“siteindex.htm”, _self);

       6、设为首页

       on (release) {

       getURL(“javascript.:void(document.links.style.behavior='url(#default#homepage)');void document.links.setHomePage('.flash8.net/')”, “_self”, “POST”);

       }

       注意要将网页中的flash的ID号命名为“links”

       加入收藏夹

       on (release) {

       getURL(“javascript.:void window.external.AddFavorite('.163.com','网页');”, “_self”, “POST”);

       }

       7、关于随机数的技巧

       用来产生6--20之间的5个不重复的随机数:

       1):首先产生一个随机数,放在数组对象中的6:flash天气预报

       天气预报

       用fp7打开,fp8有安全砂箱,演示效果截图如下:

       点击这里下载源文件

       /*////////////////////////

       /*

       /*

       /* by yellow

       /* yellowboydesign@gmail.com

       /* yellowboy.cn

       /*

       */

       ///////////////////////

       stop;

       System.useCodepage = true;

       fpv_cn = new LoadVars();

       fpv_cn.load(“.tq121.com.cn/forecast/cf.php”);

       fpv_cn_weather = new Array();

       tempcity = new Array();

       tempw = new Array();

       temphot = new Array();

       tempwind = new Array();

       tempwinds = new Array();

       fpv_cn_out = “

       ”;

       fpv_cn_city = “城市:”;

       fpv_cn_w = “天气:”;

       fpv_cn_hot = “温度:”;

       fpv_cn_wind = “风向:”;

       fpv_cn_winds = “风力:”;

       fpv_cn.onData = function(data) {

       fpv_cn_str = new String(data);

       for (i=7500; i

       //城市

       if (fpv_cn_str.slice(i, i fpv_cn_city.length) == fpv_cn_city) {

       for (j=i; j

       if (fpv_cn_str.slice(j, j fpv_cn_out.length) == fpv_cn_out) {

       tempcity.push(fpv_cn_str.slice(i fpv_cn_city.length, j-1));

       break;

       }

       }

       }

       //天气

       if (fpv_cn_str.slice(i, i fpv_cn_w.length) == fpv_cn_w) {

       for (k=i; k

       if (fpv_cn_str.slice(k, k fpv_cn_out.length) == fpv_cn_out) {

       tempw.push(fpv_cn_str.slice(i fpv_cn_w.length, k));

       break;

       }

       }

       }

       //温度

       if (fpv_cn_str.slice(i, i fpv_cn_hot.length) == fpv_cn_hot) {

       for (l=i; l

       if (fpv_cn_str.slice(l, l fpv_cn_out.length) == fpv_cn_out) {

       temphot.push(fpv_cn_str.slice(i fpv_cn_hot.length, l));

       break;

       }

       }

       }

       //风向

       if (fpv_cn_str.slice(i, i fpv_cn_wind.length) == fpv_cn_wind) {

       for (m=i; m

       if (fpv_cn_str.slice(m, m fpv_cn_out.length) == fpv_cn_out) {

       tempwind.push(fpv_cn_str.slice(i fpv_cn_wind.length, m));

       break;

       }

       }

       }

       //风力

       if (fpv_cn_str.slice(i, i fpv_cn_winds.length) == fpv_cn_winds) {

       for (n=i; n

       if (fpv_cn_str.slice(n, n fpv_cn_out.length) == fpv_cn_out) {

       tempwinds.push(fpv_cn_str.slice(i fpv_cn_winds.length, n));

       break;

       }

       }

       }

       }

       //放进数组

       //city:城市,w:天气,hot:温度,wind:风向,winds:风力

       for (o=0; o

       fpv_cn_weather.push({city:tempcity[o], w:tempw[o], hot:temphot[o], wind:tempwind[o], winds:tempwinds[o]});

       }

       //排序

       fpv_cn_weather.sortOn(“city”);

       play();

       };

篇7:flash快捷键

       flash快捷键

       工具

       箭头工具【V】部分选取工具【A】线条工具【N】

       套索工具【L】钢笔工具【P】文本工具【T】

       椭圆工具【O】矩形工具【R】铅笔工具【Y】

       画笔工具【B】任意变形工具【Q】填充变形工具【F】

       墨水瓶工具【S】颜料桶工具【K】滴管工具【I】

       橡皮擦工具【E】手形工具【H】缩放工具【Z】,【M】

       菜单命令

       新建FLASH文件【Ctrl】 【N】

       打开FLA文件【Ctrl】 【O】

       作为库打开【Ctrl】 【Shift】 【O】

       关闭【Ctrl】 【W】

       保存【Ctrl】 【S】

       另存为【Ctrl】 【Shift】 【S】

       导入【Ctrl】 【R】

       导出影片【Ctrl】 【Shift】 【Alt】 【S】

       发布设置【Ctrl】 【Shift】 【F12】

       发布预览【Ctrl】 【F12】

       发布【Shift】 【F12】

       打印【Ctrl】 【P】

       退出FLASH【Ctrl】 【Q】

       撤消命令【Ctrl】 【Z】

       剪切到剪贴板【Ctrl】 【X】

       拷贝到剪贴板【Ctrl】 【C】

       粘贴剪贴板内容【Ctrl】 【V】

       粘贴到当前位置【Ctrl】 【Shift】 【V】

       清除【退格】

       复制所选内容【Ctrl】 【D】

       全部选取【Ctrl】 【A】

       取消全选【Ctrl】 【Shift】 【A】

       剪切帧【Ctrl】 【Alt】 【X】

       拷贝帧【Ctrl】 【Alt】 【C】

       粘贴帧【Ctrl】 【Alt】 【V】

       清除贴【Alt】 【退格】

       选择所有帧【Ctrl】 【Alt】 【A】

       编辑元件【Ctrl】 【E】

       首选参数【Ctrl】 【U】

       转到8:flash教案

       flash教案

总9:flash化学课件

       一、教材分析

       本课题的主要内容是二氧化碳的性质和用途、一氧化碳的性质和用途、二氧化碳对生活环境的影响等。在本节课内容中再次充分体现“结构──性质──用途”三者间的密切关系,还蕴含了“对比”的学科思想,教师在教学中应特别注意学科思想的渗透。

       二、重难点突破

       1.二氧化碳的物理性质

       通常情况下,二氧化碳是无色、无味的气体,密度比空气大(或“二氧化碳比空气重),可溶于水(1体积水约能溶解1体积二氧化碳气体,加压溶解更多些)。

       在一定条件下,二氧化碳气体会变成液体或固体。固态二氧化碳叫做“干冰”。干冰升华时,吸收大量的热。因此干冰常用作“制冷剂”,还可用来“人工降雨”。

       在教学中应该注意:

       (1)二氧化碳是继氧气之后,学生能够相对系统学习的又一种身边的化学物质,应该关注让学生进一步建构“物理性质”的知识体系包括“颜色、状态、气味、密度、溶解性、熔沸点、硬度”等内容,从而为学生在后续(乃至高中)物质的学习奠定基础。

       (2)在认识二氧化碳状态的时候,帮助学生建构起“物质存在的状态与外界条件有关”的意识。

       (3)对于物理性质的获取途径,应该帮助学生建立如下学科方法:物质的颜色、状态可通过观察获取(观察法);气味可通过鼻闻获取(实验法);密度即可通过对“存放时瓶口方向的观察”获取(观察法),还可通过实验的方法(实验法);溶解性则要通过实验的方法(实验法),或者查阅数据的方法来判断(文献法)。所以在教学中要注意发挥“高低蜡烛”、“瓶瘪”、“干冰升华”等几个看似简单的实验的教学功能,不要忽视几个简单实验对学生学科思想方法建构所产生的影响。

       (4)对于“升华”(指固态物质不经液态直接变为气态的现象)的概念,不仅需要学生清楚概念的含义,同时强调化学用语的正确书写,不要写成“升化”、“生化”、“生华”等错误写法,化学用语是化学的语言,不能正确使用化学语言也是缺少化学素养的一种体现。

       2.二氧化碳的化学性质

       (1)二氧化碳本身无毒,但是二氧化碳不能支持呼吸(空气中含量达到一定值时,能使人窒息死亡)。

       (2)一般情况下,二氧化碳不燃烧,也不支持燃烧。

       (3)二氧化碳能与水反应生成碳酸,反应的化学方程式为:

       CO2 H2O ═ H2CO3

       碳酸很不稳定,容易分解成二氧化碳和水(受热分解会更快):

       H2CO3 ═ CO2↑ H2O

       (4)二氧化碳与氢氧化钙溶液(澄清石灰水)等碱溶液反应:

       CO2 Ca(OH)2 ═ CaCO3↓ H2O

       (现象:石灰水变浑浊,常用来检验二氧化碳)

       CO2 2NaOH ═ Na2CO3 H2O

       (5)二氧化碳高温下与碳反应(第六单元课题1所学):

       CO2 C 2CO

       (6)能与水在光照条件下发生光合作用:

       H2O CO2 有机物 O2

       在教学中应该注意:

       (1)对于二氧化碳的化学性质,学生通过前面的学习和生活经验,已经有所认识,本节课的教学任务应该加深学生对这些性质的认识。在二氧化碳是否“与水发生反应”的探究活动中,教师应该尊重学生的思维逻辑,给学生充分提供探究的空间。切忌用教师的思维替代学生的思维,或用教师的方案替代学生的方案,让学生按照教师的方案进行操作。这些都不是真实的`探究活动,都只能说是“戴着探究帽子”的虚假探究活动。同时,这个探究活动需要的仪器较少,操作也简单,也没有危险,所以建议在有条件的情况下,尽量给学生提供亲自动手探究的机会,有效培养学生的实验探究能力。

       (2)即便有“二氧化碳是否与水发生反应”的探究活动作为基础,学生在学习本课题的时候,仍然对于“二氧化碳是否与氢氧化钠溶液发生反应”的探究活动感到困难。建议教师在教学中不要急于求成,应避免提前增加学生学习的内容,人为造成学习的困难,增加学生学习的畏惧感。

       (3)在学习二氧化碳“不支持燃烧”这一性质时,教师要注意强调“一般情况下”,不要将问题绝对化,一是以免产生知识性错误,二是也为学生未来的学习留有发展的空间。

       (4)不要忽视二氧化碳的光合作用,这个反应本身为人类作出了极大贡献,也是扭转人们“误解”二氧化碳的证据之一。同时,这一知识点能够帮助学生搭建化学学科与生物学科的桥梁,能够帮助学生将已有的知识活学活用,构建自身的知识体系。

       3.二氧化碳对生活和环境的影响

       (1)二氧化碳的用途

       用途

       利用的性质

       性质类别

       灭火

       不燃烧,也不支持燃烧

       化学性质

       气体肥料

       促进光合作用

       化学性质

       光合作用

       在光照条件下,与水反应生成氧气

       化学性质

       制冷剂

       (冷藏、保鲜)

       干冰升华吸收大量热

       物理性质

       人工降雨

       干冰升华吸热,空气中的水蒸气迅速冷凝变成水滴

       物理性质

       制作碳酸饮料

       二氧化碳溶于水,并部分与水反应

       化学性质

       (2)温室效应

       温室效应产生的原因(略)。

       产生温室效应的气体除二氧化碳外,还有臭氧(O3)、甲烷(CH4)、氟氯代烷(商品名为氟利昂)等。

       控制温室效应的主要措施有:①减少使用煤、石油和天然气等化石燃料,更多地利用太阳能、风能、地热等清洁能源;②促进节能产品和技术的进一步开发和普及,提高能源的生产效率和使用效率;③大力植树造林,严禁乱砍滥伐森林;④采用物理或化学方法,人工吸收二氧化碳等等。

       在教学中应该注意:

       (1)要将二氧化碳的性质与用途结合起来进行教学,要体现“性质决定用途,用途体现性质”的学科思想。

       (2)引导学生辩证的认识“温室效应”的利与弊,培养学生辩证地看待问题的意识。

       教学片断 “两只蝴蝶”引发的探究活动

       环节一、创设学习情境,引发学生探究欲望

       上课前的课间几分钟,教师在教室中播放着《两只蝴蝶》,引得很多学生也在小声或大声的跟唱,课堂观察组的几位老师,既被歌声感染者,也在心中猜忌着“老师播放《两只蝴蝶》的用意是什么呢?”很快上课铃声响了,我们心中的疑惑也有了答案。

       【师】庞龙的《两只蝴蝶》好不好听?

       【生齐】好听!

       【师】老师这儿也有几只蝴蝶,(老师拿出两支紫色的蝴蝶),你们知道老师的两支蝴蝶是什么纸作成的吗?

       【生齐】紫色的纸。

       【师】(笑了)是紫色的纸,可是,这紫色是我自己染的色,你们想知道我用什么染的色吗?

       【生齐】想。

       【师】紫色石蕊。

       【生1】老师,紫色石蕊是什么东西啊?

       【师】问得好!紫色石蕊是一种色素,遇到某些物质能够变色,有时候变成红色,有时候变成蓝色,那要看它遇到什么物质了,我们在第十单元还会更详细地学习有关它的知识。下面我先请紫蝴蝶们给大家表演一个短剧。请大家欣赏:

       剧情一:教师在一盛有少许热水的盘子中(很少的温水即可,目的是让后面的现象更明显),然后再盘子中加入几块干冰,立即产生大量的云雾。

       剧情二:(教师画外音)有两只紫色蝴蝶飞呀飞(学生自动给老师伴唱“飞过丛林,飞过小溪水”),飞着去看人间仙境(指刚才制作的干冰云雾)。

       剧情三:(教师画外音)忽然,天降小雨(同学帮忙用喷壶喷水),赶紧跑,可惜其中的一只蝴蝶没躲开,被淋了个“落汤蝶”(老师故意让其中一只蝴蝶被喷水)(学生哄堂大笑)。

       剧情四:(教师画外音)赶紧躲一躲呀,两只蝴蝶分别飞进了两只集气瓶(里面均盛有二氧化碳气体)。

       剧情五:(教师画外音)外面的雨停了,紫蝴蝶们出来吧。咦!同学们,你们发现了什么?”

       【生】被雨淋湿的“紫蝴蝶”变成了“红蝴蝶”(学生们睁大眼睛,困惑不已)。

       【师】同学们看完刚才的“蝴蝶剧”有什么问题吗?

       学生提出的问题主要有:(1)“云雾”是怎么产生的?(2)集气瓶中的气体是什么?(3)“紫蝴蝶”为什么会变成“红蝴蝶”?

0:Flash数据资源回收策略论文

       Flash数据资源回收策略论文

       摘要:

       介绍了一种嵌入式设备的Flash资源回收策略。该策略的实现需要嵌入式系统支持多任务,在后台实现两个任务,一个用来统计CPU占有率的CPU负载检测任务,一个是Flash资源回收检测任务。Flash垃圾回收策略能够自动根据CPU负载情况、资源剩余情况来调整垃圾后台回收的频率,并在Flash资源严重不足的情况下报警,能够有效避免设备在资源不足的环境下运行造成大的损失,保证了设备运行的安全性。

       关键词:嵌入式设备;Flash资源回收;时间粒度滑动窗口;CPU负载

       嵌入式设备对其本身的可靠性要求极高,由于一些不可预测的因素或者是没有发现的潜在危险导致Flash的垃圾资源回收不及时,会出现文件操作耗时较长等异常情况,会导致嵌入式设备产生不可预知的危险,在这种情况下很难保证设备的可靠性、安全性,甚至会对整个嵌入式系统造成严重的后果。

       鉴于此,本文提出了一种Flash资源回收的策略:设备能够在运行过程中根据CPU负载情况和Flash的有效资源空间剩余情况,自动调整后台回收的频率,能够有效利用CPU的空闲时刻进行垃圾回收,尽量避免异常情况的发生,但是如果一旦有异常情况发生,设备会将异常情况记录并报警,帮助现场工作人员尽快定位并解决问题,避免问题扩大而造成不可挽回的损失[1――3]。

       一、时间窗口和时间粒度。

       本文提出一种嵌入式设备的Flash资源回收的策略,能够通过实时检测到的CPU负载率和Flash空间利用率(Flash已被占用空间与Flash总空间的百分比)来确定后台资源回收的周期(即设备每次清理内存的时间间隔),定时清理内存。在具体介绍该方法之前,首先对本回收策略的时间粒度滑动窗口和时间粒度进行说明。如图1所示,嵌入式设备后台资源回收的清理周期按照大小顺序依次排列,形成时间粒度(资源回收周期)进度条,进度条上面每个具体的时间粒度的大小是由设备特性如CPU主频、CPU负载、Flash空间大小、Flash空间利用率、系统的资源回收能力来决定的。其中T表示清理周期,coefficient为与具体工程应用有关的经验系数,free_block表示有效的Flash资源剩余量,complexity表示业务的系统复杂度,erase speed表示块擦除速度,gc_ability表示嵌入式系统本身的垃圾回收能力,fCPU表示使用CPU的主频,need_space表示业务对Flash空间大小的要求。如图1所示,时间粒度滑动窗口表示在当前CPU负载率情况下,能够选择的资源回收周期的范围,然后根据Flash空间利用率等因素,在时间粒度窗口的范围内确定具体的时间粒度值。资源回收时间粒度滑动窗口是根据CPU的负载情况,实时地在时间粒度进度条上滑动[4]。

       在CPU负载比较低的状态下,资源回收时间粒度滑动窗口向时间粒度进度条的左侧(时间粒度值小的一端)滑行。在CPU负载比较高的状态下,资源回收时间粒度滑动窗口向时间粒度进度条的右侧(时间粒度值小的一端)滑行。Flash空间利用率的大小决定了时间粒度在资源回收时间粒度滑动窗口上取值的位置。在Flash空间利用率比较低的情况下,也就是Flash可用空间剩余比较充分的情况下,垃圾资源回收的需求不迫切,时间粒度就在资源回收时间粒度滑动窗口偏右的位置取值,即时间粒度取得相对较大的值,垃圾资源回收频率就变小。在Flash空间利用率比较高的情况下,也就是Flash可用空间剩余比较少的情况下,垃圾资源回收的需求就变得很迫切,时间粒度就在资源回收时间粒度滑动窗口偏左的位置取值,即时间粒度取得相对较小的值,垃圾资源回收频率就变大[5]。设备运行期间,根据CPU负载率和Flash有效资源空间剩余程度自动判断垃圾资源回收的频率,在不影响设备性能的情况下保证设备运行的安全性和可靠性。

       二、方案。

       1、方案实现基本思路。

       本方案的实现需要两个任务配合实现:CPU负载监视任务、资源回收检测任务,如图2所示。CPU负载检测任务负责实时检测CPU使用情况(占有率)、完成对资源回收时间粒度滑动窗口滑动趋势的判定和控制。资源回收检测任务主要负责Flash资源回收的具体事务,并且根据时间粒度判定模块确定的具体时间粒度确认回收资源的快慢[6]。资源回收时间粒度是由CPU负载率和Flash空间利用率共同决定的,CPU负载率负责判定资源回收时间粒度窗口的滑动趋势,Flash空间利用率负责确定在滑动窗口上定位具体的时间粒度值[4]。

       2、CPU负载检测任务。

       CPU负载检测任务负责实时检测CPU的负载情况,并决定时间粒度滑动窗口的滑动方向和初度。当CPU负载小的时候,时间粒度向时间力度条的左端滑动,减小后台资源回收检测任务的时间、增大回收粒度,这样做是为了提高垃圾回收速度。当CPU负载大的时候,时间粒度向时间力度条的右端滑动,增大后台资源回收检测任务的间隔时间、减小回收粒度,这样做是为了降低垃圾回收速度,减轻CPU负载。

       3、资源回收检测任务。

       首先,资源回收是每个嵌入式文件系统自身应该具备的功能。资源回收检测任务实现了一个优化使用资源回收的策略。任务初始化时需要定义垃圾回收时间粒度的默认值,比如回收间隔时间(时间粒度)默认值定义为400ms,那么每隔400ms就会进行一次后台的垃圾回收。其次,任务的每次循环都需要检测有效资源剩余,根据Flash有效资源的剩余情况来确定资源回收时间粒度。在CPU负载检测任务控制的时间粒度滑动窗口上面确定具体的时间粒度,根据时间粒度调整下次后台垃圾回收的时间。

       三、实现。

       1、时间粒度初始化。

       首先,设备需要实现时间粒度条和时间粒度滑动窗口的初始化:时间进度条上的时间粒度保证从小到大的趋势,具体的时间粒度值和相邻值之间的跨度由用户根据设备特性(CPU速率和基本负载、存储空间大小等)来决定。时间粒度滑动窗口根据CPU负载的变化在时间粒度条上滑动,该窗口的大小可以由用户自定义,如图1所示的示意图,窗口的大小定义为7,即窗口每次包含7个时间粒度值。

       2、CPU负载检测任务。

       在嵌入式设备上电之后,系统初始化阶段,启动一个最低优先级的任务:CPU负载检测任务,该任务在初始化期间记录一段变量递增算法的时间间隔T1,由于初始化期间其他任务都没有开始运行,所以可以获取一个比较精确的标准参照时间间隔[7]。CPU负载检测任务运行期间,记录同样一段变量递增算法(与CPU负载检测任务初始化时的算法一样)的时间间隔T2,由于CPU负载检测任务的优先级最低,所以嵌入式设备运行期间,只要有其他任务运行,该任务就会被打断去执行其他任务,直到其他任务都执行完毕并处于挂起状态,该任务才会被继续执行。

       所以CPU任务越多,执行越频繁,实际统计的时间间隔就越长。当CPU负载减小的'时候,说明空闲时间较多,有能力处理更多的任务,这时时间粒度滑动窗口向左端滑动,减小后台资源回收检测任务的时间粒度(间隔)、增大回收粒度,这样做可以提高垃圾回收速度,同时也提高了CPU的利用率[8]。当CPU负载增大的时候,说明空闲时间减少,这时时间粒度滑动窗口向右端滑动,增大后台资源回收检测任务的间隔时间、减小回收粒度,这样做可以降低垃圾回收速度,减轻CPU负荷。

       3、资源回收检测任务。

       资源回收检测任务最重要的功能就是根据策略判定资源回收的时间粒度,然后调用系统本身的资源回收功能进行Flash垃圾资源的回收。该任务初始化时需要定义垃圾回收时间粒度的默认值,比如回收间隔时间默认值定义为400ms,那么每隔400ms就会进行一次后台的垃圾回收。任务的每个循环都需要检测有效资源的剩余情况、业务对资源的需求情况,由此在时间粒度滑动窗口上面确定具体的时间粒度,任务根据时间粒度调整下次后台垃圾回收的时间间隔。举个简单的例子(实际应用中各门槛值都可以根据自身具体的业务更加细化)。当CPU占有率小于30%时候,此时负载比较低,时间粒度滑动窗口向数值小的一端滑行,可以看到窗口的范围是200――700ms,共包括7个时间粒度值,具体选择哪个粒度值就需要由剩余的有效Flash资源、业务需求决定。当有效资源剩余量充足的时候,说明资源足够,垃圾回收的需求不迫切,可以选择700ms的粒度。当有效资源剩余量比较少的时候,垃圾回收的需求就比较迫切,可以选择200ms的粒度,加快垃圾回收。

       当CPU占有率在60%左右时CPU负载适中,时间粒度滑动窗口向右端滑行,可以看到窗口的范围是500――1200ms,共包括7个时间粒度值,具体选择哪个粒度值由剩余的有效资源决定。当有效资源剩余量比较多的时候,说明资源足够,垃圾回收的需求不迫切,可以选择1200ms的粒度。当有效资源剩余量比较少的时候,垃圾回收的需求就比较迫切,可以选择500ms的粒度,加快垃圾回收。当CPU占有率大于90%时CPU负载很大,时间粒度滑动窗口向数值大的一端滑行,可以看到窗口的范围是1000――2200ms,共包括7个时间粒度值,具体选择哪个粒度值由剩余的有效资源决定。当有效资源剩余量比较多的时候,说明资源足够,垃圾回收的需求不迫切,可以选择2200ms的粒度。当有效资源剩余量比较少的时候,垃圾回收的需求就比较迫切,可以选择1000ms的粒度,加快垃圾回收。一旦检测到Flash剩余有效资源减少到需求门槛以下、CPU负载比较重、资源回收不及时的情况,任务触发嵌入式装置报警。

       四、模拟测试。

       为了方便测试和说明问题,将资源回收时间粒度、Flash剩余空间、CPU负载组成三维坐标,模拟出示意图说明CPU负载、Flash剩余空间和回收时间粒度的变化趋势之间的关系。条件如下:

       ①将时间粒度进度条长度限定为3000ms,即时间粒度只能在0――3000ms范围内选择。

       ②将时间粒度滑动窗口长度限定为500ms,滑动窗口的滑动粒度是25ms,即CPU负载每变化1%,滑动窗口就会滑动25ms的范围。

       ③时间粒度最小选择单位为5ms,即Flash剩余空间每变化1%,时间粒度选择就会有5ms的改变。在时间粒度的三维分布入中,存在安全区域和报警区域:在安全区域以内说明Flash剩余有效空间充足,或者是CPU对垃圾资源的回收速度大于Flash剩余空间的使用速度;当Flash剩余空间不充足并且CPU回收粒度跟不上Flash空间使用速度的时候,就会触发报警,警告设备可能会存在异常情况。

       结语:

       本方案在保证嵌入式系统正常运行的情况下,做好了垃圾资源回收工作,为资源的有效利用做好了准备。这样就能够尽量提高CPU利用率,在不影响高优先级实时任务的前提下尽可能快速回收Flash资源,保证有效资源剩余空间并保证在资源紧张时候报警,提高了设备运行的安全性、可靠性和高效性。

1:成教高职院校Flash教学论文

       1研究flash教学的重要性

       FLASH动画业已在电子商务、教育、传媒、公共事业管理等领域发挥重大作用,如动漫设计、网站美工、文秘等都要求会用flash。除此之外,Flash文件体积小,便于通过互联网传播,学习和掌握也相对容易。因此,高职院校已普遍把它列为众多专业的必修课。怎提高flash教学效果,日益成为一门重要课题。