DSP-C代码优化总结

时间:2019-05-13 16:31:49下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《DSP-C代码优化总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《DSP-C代码优化总结》。

第一篇:DSP-C代码优化总结

代码优化总结

在优化一段代码之前,首先要找出这段程序中最消耗时间的那一段程序,对最耗时程序段的优化会带来很大的优化效果收益。一般而言,这个最耗时的程序一般位于一个循环体内,而且这个循环体的循环次数非常之多。下面是具体的一些优化措施:

1.在循环体内最好不要有条件判断句,尤其是在内层循环。因为内层循环太多的条件判断句会打断程序执行的流水线

2.while和for循环的选取。如果知道循环次数的话,选用for语句 3.在循环体内,尽量不要使用系统函数调用,因为系统调用会消耗太多的时间。

4.如果函数条用的代码量很小,而且使用的次数又非常的多得话,将这一段函数改成内联函数,这样可以减少函数调用的开销。5.如果有几层循环的话,将循环次数多得放在内层循环里。6.用移位运算来代替乘法运算。

7.在循环体内最好不要用数学函数。尤其是power、除法操作、模数操作是非常耗时的运算。应该用其他的方法来实现这些操作。

以上的这些只是在程序优化时的一些参考,其实程序的优化总体来说分成算法上的优化和程序结构上的优化,如果想要实现很高的优化效率的话,应该从算法上入手。但是程序结构上的优化也是必不可少的,它能够使我们充分发掘CPU的性能。

DSP上C代码的优化

一: 代码优化

A:数据类型优化 1)整数

Use unsigned int instead of int if it is known that the value will never be negative.Integer arithmetic is much faster than floating-point arithmetic some processors can handle unsigned integer arithmetic considerably faster than signed so, the best declaration for an int variable in a tight loop would be: unsigned int variable_name.2)除法和取余运算

In standard processors, depending on numerator(x)and denominator(y), a 32 bit division takes 20-140 cycles to execute.It will be better to use unsigned division by ensuring that one of the operands is unsigned, as this is faster than signed division.3)全局变量

Global variables are never allocated to registers.Hence, the compiler cannot cache the value of a global variable in a register, resulting in extra loads and stores when global are used.So, avoid using global variables inside critical loops.If a function uses global variables heavily, it is beneficial to copy those global variables into local variables so that they can be assigned to registers.This is possible only if those global variables are not used by any of the functions which are called.Then it will take less amount of time to execute.4)函数的指针参数

如果函数的参数有指针参数,并且这个指针的值在函数被调用期间被使用很多次,而且每次使用并不会改变指针参数所指向的变量的值,那么在函数内部将这个指针参数的值赋值给一个局部变量。这样能减少函数每次去读取指针参数所指向的值的时间。5)局部变量

Where possible, it is best to avoid using char and short as local variables.For the types char and short, the compiler needs to reduce the size of the local variable to 8 or 16 bits after each assignment.This is called sign-extending for signed variables and zero extending for unsigned variables.It is implemented by shifting the register left by 24 or 16 bits, followed by a signed or unsigned shift right by the same amount, taking two instructions(zero-extension of an unsigned char takes one instruction).These shifts can be avoided by using int and unsigned int for local variables.This is particularly important for calculations which first load data into local variables and then process the data inside the local variables.Even if data is input and output as 8-or 16-bit quantities, it is worth considering processing them as 32-bit quantities.B:指针优化 1)指针链

Pointer chains are frequently used to access information in structures.So, pointer should be modified accordingly to make the code faster.For example, a common code sequence is: typedef struct { int x, y, z;} Point3;

typedef struct { Point3 *pos, *direction;} Object;void InitPos1(Object *p){

p->pos->x = 0;p->pos->y = 0;

p->pos->z = 0;

}

This code must reload p->pos for each assignment, because the compiler does not know that p->pos->x is not an alias for p->pos.A better approach would cache p->pos in a local variable:

void InitPos2(Object *p){

Point3 *pos = p->pos;pos->x = 0;

pos->y = 0;pos->z = 0;} C: 循环

1)循环结束条件

The loop termination condition can cause significant overhead if written without caution.So, always write count-down-to-zero loops and use simple termination conditions.The execution will take less time if the termination conditions are simple.2)循环阻塞

Never use two loops where one will suffice.But if there is a lot of work in the loop, it might not fit into your processor's instruction cache.In this case, two separate loops may actually be faster as each one can run completely in the cache.3)函数调用

Functions always have a certain performance overhead when they are called.Not only does the program pointer have to change, but in-use variables have to be pushed onto a stack, and new variables allocated.Care must be taken though to maintain the readability of the program whilst keeping the size of the program manageable.If a function is often called from within a loop, it may be possible to put that loop inside the function to cut down the overhead of calling the function repeatedly.4)循环展开

Small loops can be unrolled for higher performance, with the disadvantage of increased code size.When a loop is unrolled, a loop counter needs to be updated less often and fewer branches are executed.If the loop iterates only a few times, it can be fully unrolled, so that the loop overhead completely disappears.D: 函数设计

保持函数的小而且简单是很有好处的。这样可以使得编译器采取一些更加好的优化措施,例如分配寄存器等,这将会更加有效率。1)函数调用的开销

函数调用的开销是比较小的,相对于被调用函数的执行时间来说,函数调用的开销所占的比例很小。但是对于函数的参数想要以寄存器的形式传递的话,那么所能传递的参数是有一些上限的。通常能以寄存器形式传递的函数参数都要是整数类型(或者类似整数类型的,char, shorts, ints and floats all take one word)或者是占用内存位4个整型大小的结构体变量。假如参数个数的上限是4的话,那么第五个参数以及后来的其他的参数都将会存储在栈上,这样在调用这样的幻术的时候就会要去栈上读取参数值,耗费了时间,增加了函数调用的时间。

2)最小化函数参数传递耗时

最小化函数参数传递耗时,采取的措施是确保函数小而且参数少于4个,这样可以保证函数不会使用栈来传递参数。

@1 如果一个函数需要的参数个数多于4个的话,那么最好是这个函数所处理的代码很多,这样才能使得栈参数传递是值得的; @2 用结构体指针作为函数参数,来代替结构体本身作为函数参数来传递;

@3 将同一类的参数放在一个结构体里面,用结构体指针来传递这些参数,这样就可以减少函数参数的个数,而且可以使函数更加的稳健。3)使用内联函数

Functions with the keyword __inline results in each call to an inline function being substituted by its body, instead of a normal call.This results in faster code, but it adversely affects code size, particularly if the inline function is large and used often.There are several advantages to using inline functions.It will provide no function calls overhead and lower argument evaluation overhead.The biggest disadvantage of inline functions is that the code sizes increase if the function is used in many places.This can vary significantly depending on the size of the function, and the number of places where it is used.It is wise to only inline a few critical functions.Note that when done wisely, inlining may decrease the size of the code: a call takes usually a few instructions, but the optimized version of the inlined code might translate to even less instructions.E: 要点小结

i)Avoid using ++ and--etc.within loop expressions.E.g.: while(n--){}, as this can sometimes be harder to optimize.ii)Minimize the use of global variables.iii)Declare anything within a file(external to functions)as static, unless it is intended to be global.iv)Use word-size variables if you can, as the machine can work with these better instead of char, short, double, bit fields etc.v)Don’t use recursion.Recursion can be very elegant and neat, but creates many more function calls which can be a large overhead.vi)Avoid the sqrt()square root function in loopsthere is often a compiler switch for this.x)Floating point multiplication is often faster than divisionuse val + val + val instead of val * 3.puts()is quicker than printf(), although less flexible.xii)Use #defined macros instead of commonly used tiny functions – sometimes the bulk of CPU usage can be tracked down to a small external function being called thousands of times in a tight loop.Replacing it with a macro to perform the same job will remove the overhead of all those function calls,and allow the compiler to be more aggressive in its optimization.xiii)Turn compiler optimization on!The compiler will be able to optimize at a much lower level than can be done in the source code, and perform optimizations specific to the target processor.二:编译器优化

For the Compiler Optimization the compilers will generate machine instructions based on the C code written, and then make multiple passes through the code to look for improvements.The compiler will update the machine code with improvements and continue to analyze the code until no further enhancements can be made.The compiler tools can perform many optimizations that improve the execution speed and reduce the size of C programs by performing tasks such as simplifying loops, software pipelining, rearranging statements and expressions, and allocating variables into registers.

第二篇:英文google优化网站代码

src=“/wp-content/plugins/advanced-fancybox/fancybox/jquery.easing.1.3.js”>-->

具体位置:
点击我们的地图

第三篇:写代码总结

一、排版:

1.关键词和操作符之间加适当的空格。

2.相对独立的程序块与块之间加空行

3.较长的语句、表达式等要分成多行书写。

4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。

5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。

7.若函数或过程中的参数较长,则要进行适当的划分。

8.不允许把多个短语句写在一行中,即一行只写一条语句。

9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。

10.C/C++语言是用大括号„{‟和„}‟界定一段程序块的,编写程序块时„{‟和

„}‟应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

二、注释

1.注释要简单明了。

2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。

4.对代码的注释应放在其上方相邻位置,不可放在下面。

5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。

6.变量、常量的注释应放在其上方相邻位置或右方。

7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。

9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。

三、命名

1.较短的单词可通过去掉“元音”形成缩写;

2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。

3.使用匈牙利表示法

四、可读性

1.避免使用不易理解的数字,用有意义的标识来替代。

2.不要使用难懂的技巧性很高的语句。

3.源程序中关系较为紧密的代码应尽可能相邻。

五、变量

1.去掉没必要的公共变量。

2.构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。

3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。

4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。

5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。

6.防止局部变量与公共变量同名。

7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。

8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地(如预留一些空间等)。

9.留心具体语言及编译器处理不同数据类型的原则及有关细节。

10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。

11.编程时,要注意数据类型的强制转换。

六、函数、过程

1.函数的规模尽量限制在200行以内。

2.一个函数最好仅完成一件功能。

3.为简单功能编写函数。

4.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。

5.尽量不要编写依赖于其他函数内部实现的函数。

6.避免设计多参数函数,不使用的参数从接口中去掉。

7.用注释详细说明每个参数的作用、取值范围及参数间的关系。

8.检查函数所有参数输入的有效性。

9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。

10.函数名应准确描述函数的功能。

11.避免使用无意义或含义不清的动词为函数命名

12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。

13/明确函数功能,精确(而不是近似)地实现函数设计。

14.减少函数本身或函数间的递归调用。

15.编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护。

七、可测性

1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。

2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。

八、程序效率

1.编程时要经常注意代码的效率。

2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。

3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。

4.编程时,要随时留心代码效率;优化代码时,要考虑周全。

5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。

6.通过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。

7.在多重循环中,应将最忙的循环放在最内层。

8.尽量减少循环嵌套层次。

9.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。

10.尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。

九、质量保证

1.在软件设计过程中构筑软件质量。

代码质量保证优先原则

(1)正确性,指程序要实现设计要求的功能。

(2)稳定性、安全性,指程序稳定、可靠、安全。

(3)可测试性,指程序要具有良好的可测试性。

(4)规范/可读性,指程序书写风格、命名规则等要符合规范。

(5)全局效率,指软件系统的整体效率。

(6)局部效率,指某个模块/子模块/函数的本身效率。

(7)个人表达方式/个人方便性,指个人编程习惯。

2.只引用属于自己的存贮空间。

3.防止引用已经释放的内存空间。

4.过程/函数中分配的内存,在过程/函数退出之前要释放。

5.过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出前要关闭。

6.防止内存操作越界。

7.时刻注意表达式是否会上溢、下溢。

8.认真处理程序所能遇到的各种出错情况。

9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。

10.系统运行之初,要对加载到系统中的数据进行一致性检查。

11.严禁随意更改其它模块或系统的有关设置和配置。

12.不能随意改变与其它模块的接口。

13.充分了解系统的接口之后,再使用系统提供的功能。

14.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符。

15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。

16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点:

(1)充分了解应用接口、使用环境及使用时注意事项。

(2)不能过分相信其正确性。

(3)除非必要,不要使用不熟悉的第三方工具包与控件。

十、代码编译

1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。

2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。

3.合理地设计软件系统目录,方便开发人员使用。

4.打开编译器的所有告警开关对程序进行编译。

5.在同一项目组或产品组中,要统一编译开关选项。

6.使用工具软件(如Visual SourceSafe)对代码版本进行维护。

十一、代码测试、维护

1.单元测试要求至少达到语句覆盖。

2.单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。

3.清理、整理或优化后的代码要经过审查及测试。

4.代码版本升级要经过严格测试。

第四篇:软件工程代码总结

1、事件

处理事件的方法

2、class和id的用途是不一样的;首先要说明一下,选择器一共有三种:

html标记,class,id;html标记就不说了,class是对html标记选择器的一种扩展,CLASS可以给多个标记反复利用;而ID的目的在于被Javascript使用,来动态改变CSS,所以2种的实际用途是截然不同的。

如:“id”对应“#”,“class”对应“.”.id是唯一标志的,在同一页面中不能有相同的值,class则没这约束。如: Css #div1{......}.div2{......}

//class可以相同重复用

第五篇:flash常用代码总结

1、flash停顿多少秒后播放

setInterval()在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码 setTimeout()只执行一次那段代码

两个方法用法一样

1、如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval

2、如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout

stop();//设置停顿时间,单位毫秒

var loadTime=setInterval(playMC,5000);function playMC(){ play();clearInterval(loadTime);//终止被调用的过程代码的执行 }

2、Flash调用外部swf定位和大小

http://mojojo.blogbus.com/logs/16055529.html

flash调用外部swf定位和大小的ActionScript函数。

(1)用同一目录下swf文件,一般来说用loadMovie(“mpg.swf”,“mpg”);

可是那样不好控制swf的位置和大小把你的swf文件导入到一个空mc中去,然后通过调整这个空的mc来控制你的导入的swf文件的大小。

(2)文字要改变其大小可以用: setproperty(“mcname”,_xscale,xx);setproperty(“mcname”,_yscale,yy);

//其中mcname为空mc的实例名,xx,yy为调整数值(3)要改变调入后的swf的位置: setproperty(“mcname”,_x,xxx);setproperty(“mcname”,_y,yyy);

//其中xxx,yyy是数值,即新的位置

功能说明: loadMovieNum(“url”,level[, variables])loadMovie(“url”,level/target[, variables])

功能说明:

在播放原来加载的影片的同时将SWF或JPEG文件加载进来。

参数说明:

url 要加载的 SWF 或 JPEG 文件的绝对或相对 URL,不能包含文件夹或磁盘驱动器说明。

level 把swf文件以层的形式载入到Movie里,若载入0层,则载入的swf文件将取代当前播放的Movie。2层高于1层。

Target 可用路径拾取器取得并替换目标MC,载入的电影将拥有目标MC的位置、大小和旋转角度等属性。(个人认为用Target好些,在控制载入.swf位置时比较方便)variables 可选参数,指定发送变量所使用的 HTTP 方法(GET/POST),如果没有则省略此参数。

层次Level:Flash允许同时运行多个SWF文件,Flash一旦载入一个SWF文件,则占据了一个“层次”,系统默认的是_Flash0或_Level0,之后的Movie则按顺序放在level0---level16000里。第一个载入的SWF文件为_Flash0或 _Level0,第二个如果加载到第一层时的称为_Flash1或_Level1,依此类推。注意前提是前面载入的文件没有退出,否则冲掉第一个SWF文件,第一个文件也从内存中退出。

注意:如果你将外部的Movie加载到Leve0层或者Level0里,那么,原始的Movie就会被暂时取代,要再用时还得重新Load一次,也就是说,一个Level在一个时间里只能有一个Movie存在。在使用LoadMovie和UnLoadMovie时必须特别注意 Level之间的关系,否则,当你希望在一个时间里只播放一个Movie而Unload掉前一个Movie时,就会出现不必要的麻烦。

unloadMovieNum(level)

unloadMovie[Num](level/“target”)

功能说明: 从 Flash Player 中删除已加载的影片。

参数说明: 同上

loadVariables(“url” ,level/“target” [, variables])

功能说明:

从外部文件中(例如文本文件,或由 CGI 脚本、Active Server Page(ASP)、PHP 或 Perl 脚本生成的文本)读取数据,并设置 Flash Player 级别或目标影片剪辑中变量的值。

参数说明:

url 变量所处位置的绝对或相对 URL

level 指定 Flash Player 中接收这些变量的级别的整数。

Target 指向接收所加载变量的影片剪辑的目标路径。

variables 可选参数,指定发送变量所使用的 HTTP 方法(GET/POST),如果没有则省略此参数。

gotoAndPlay(scene, frame)

功能说明:

转到指定场景中指定的帧并从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。

参数说明:

scene 转到的场景的名称。

frame 转到的帧的编号或标签。

Flash常用代码的介绍

作者:ayan_2006 类型:闪吧BBS 来源:闪吧个人空间

1、用flash做那种弹出的小窗口分两步:给flash中的按钮加入如下action:

on(release){

getURL(“BLOCKED SCRIPTMM_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、设为首页:

一,用getURL的方法:

设为首页:

on(release){

getURL(“getURL(”javascript:void(document.links[0].style.behavior=’url(#default#homepage)’);void document.links[0].setHomePage(’http:// 您的网站地址/’);“, ”_self“, ”POST“);} 加入收藏夹:

on(release){

getURL(”getURL(“javascript:void window.external.AddFavorite(’http://您的网站地 址’,’网站名称’);”, “_self”, “POST”);} 第二种方法是通过用fscommand的方法,比上面一个要复杂一些。首先在Flash 的按钮上添加ActionScript脚本代码

设为首页

on(release){ fscommand(“setHomePage”, “http://您的网站地址”);} 加入收藏夹

on(release){ fscommand(“addFavorite”, “http://网站地址|网站名称”);} 在发布 Flash动画时选上HTML,在Template下拉菜单中选择Flash with fscommand,发布出html页面接着要对发布出来的HTML页面进行修改,在HTML代码中找 到这么一段

// Handle all the the FSCommand messages in a Flash movie&nb sp;function sethomepage_DoFSCommand(command, args){ } 这一段修改成 // Handle all the the FSCommand messages in a Flash movie function sethomepage_DoFSCommand(command, args){

var sethomepageObj = InternetExplorer ? sethomepage : document.sethomepage;if(command == “setHomePage”){

document.links[0].style.behavior = “url(#default#homepage)”;

document.links[0].setHomePage(args);} else if(command == “addFavorite”){ args = args.split(“|”);window.external.AddFavorite(args[0], args[1]);最后,如果html里一个链接都 没有,还需在 第二种方法:

也可以在SWF文件的第一帧Actions上的GETURL 命令上加上:

也可以在SWF文件的第一帧Actions上的GETURL 命令上加上:

javascript:window.open(”nfd.swf“,”“,”fullscreen=1,menubar=no,width=800,height=600“)这种全屏也是类似屏 保,用ALT+F4或设置按钮退出。把fullscreen设为=0,则只是不显示浏览器菜

单栏、工具栏的全屏。还有一个写法:

javascript:window.open(”*.swf“,”“,”menubar=no, toolbar=no,location=no,status=no,fullscreen=yes“)

我个人推荐这种^_^ 第三种方法:

稍麻烦一些,需要两个网页,呵呵*—* 你可以建立个空白网页加上代码 :

*.htm 你把他替换为 你自己要全屏打开的网页就可以了

第四种方法:

这种方法更详细,还有步骤,不过我没有试过,你们可以先试一下啊。我把 操作步骤写下:

1、在Flashk中做好动画后,首先选择主菜单中的File Publish Settings(文件发布设置命令),弹出对话框,点击进入HTML项设置: 设置Dimensions尺寸单位为Percent百分比;在宽,高中设置100。再点击发布按钮进行发布即可。这样,在你原文件处就会生成一个和动画同名的HTML 文件。

2、建立一个空白的HTML页面blank.htm,只保留标签部分。

3、建立一个有带框架的html文件show.html,页面 html文本如下:

marginwidth=”0“ marginheight=”0“ leftmargin=”0“ rightmargin=”0“ topmargin=”0“> 该文件将页面分为两个框 架,上面放动画名.html文件,下面放blank.html文件。注:其中,动画名.html文件是在第一步中发布出来的相应的html文件。

4、建立一个带 JavaScript脚本的html文件full.html。用这个文件打开show.html并 定义其显示窗口为全屏,不带菜单,滚动条,状态栏等。该文件的html文本如 下:

上面的第四步和第三种方法一样的 9、如何禁止右键菜单,fscommand的方法还是只能适用于fp,在网页中使用还是必须添加额外的参数,或者用最简单的一句as,在fp和网页中均适用:

Stage.showMenu=false;

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

getURL(”siteindex.htm“, ”_self“);

最常用的Flash语句flash语句(汇集)FLASH代码

flash 动作语句 flash全屏语句 flash按钮触发语句 flash 最小化语句 flash自动跳转语句

1、flash按钮触发语句

box_btn.onPress=function(){ trace(”ok“);};按钮实例名称.事件处理方法=function(){ //处理程序

};例如:

n=1 box_btn.onRelease=function(){ n=n+1 trace(”n=“+n);} 当按钮被点一下的时候,Output窗口会输出:”n=2“ onClipEvent(load){ stop();} 以上是影片剪辑的事件处理函数。”()“的内部是事件。

在一个FLASH里在第一个场景里调用第二个场景,要在第一个场景里需要调用的地方加个按钮,然后在按钮上写下如下代码:

on(release){ tellTarget(”_root“){ gotoAndPlay(”mm2“, 1);} } 其中,”mm2“是第二个场景的MC的名称。

on(release){ loadmovie(”fz3.swf“,1);setProperty(”fz3.swf“,_x,100);

setProperty(”fz3.swf“,_y,100);

_root.createEmptyMovieClip(”Card Game“);

mc.loadMovie(”fz3.swf“);

mc._x=0;

mc._y=0;

} fz3.swf是需要调入的SWF文件,_x,_y是坐标轴

Card Game是SWF中MC的名字

on(release)结构只能用于按钮,其他相关的几种用法如on(press)、on(rollOver)、on(rollout)、on(dragOver)、on(dragOut)等。

2.If-else语句

对if语句可以进行扩展,使用else执行条件不成立(比较表达式为false)时的代码,如下所示:

if(x == 9){ gotoAndPlay(15);} else { gotoAndPlay(16);} 你也可以使用else if语句将if语句更推进一步,如下所示: if(x == 9){ gotoAndPlay(15);} else if(x == 10){ gotoAndPlay(16);} else if(x == 11){ gotoAndPlay(20);} else { gotoAndPlay(25);} 你可以让if语句想要多长就有多长,你也可以使用else if语句对别的变量进行比较,如下所示:

if(x == 9){ gotoAndPlay(15);} else if(y<20){ gotoAndPlay(16);} else { gotoAndPlay(25);} 复合比较

你可以在一个if语句中对几个比较表达式的值进行判断,比如说你希望在x为9并且y为20时跳转到第10帧,可以使用如下所示的脚本:

if((x == 9)&&(y == 20)){ gotoAndPlay(10);} 逻辑与运算符&&将两个比较表达式联接在一起成为一个复合表达式,当两个表达式的值都为true时复合表达式的值才为true。

每个比较表达式都需要添加独立的括号以便Flash能正确识别。

在Flash的早期版本中使用and执行逻辑与运算,现在已推荐不使用。

你也可以使用逻辑或运算符||将两个比较表达式联接在一起成为一个复合表达式,只要有一个表达式的值为true,复合表达式的值就为true。如下所示:

if((x == 7)||(y == 15)){ gotoAndPlay(20);} 在该脚本中,只要x为7或者y为15,或者两者都成立,结果都是跳转到第20帧。

只有当两者都不成立时,才不会执行gotoAndPlay命令。

3、函数

到现在为止,我们都是将脚本放在影片的第1帧中。

如果程序相当复杂,再放在同一帧中就使脚本显得太庞大了。

函数使你可以组织需重用的代码,并放在时间轴中,例如: function myFunction(myNum){ var newNum = myNum+5;return newNum;} 函数以关键字function开头,function后面是函数名。

与变量名相似,你可以指定自己的函数名,最好将函数名取得有意义一些。

函数名后面的括号容纳该函数的参数,所谓参数也是一个变量,它的值在调用该函数时予以指定。

一个函数可以有若干参数,也可以没有参数。无论有没有参数,函数名后都应紧跟一对括号。

大括号中的部分是函数体,在函数体中创建了一个局部变量newNum,将myNum加5的结果设置为newNum的值。

如果你将10作为参数传递给该函数,newNum的值就是15。

return命令仅用于函数中,使用return结束一个函数并返回函数值。

此处,newNum是用return命令返回的函数值。

要使用函数,就需要调用它,如下所示:

var a = myFunction(7);该语句创建一个新的局部变量a,将7作为参数调用函数myFunction,并将函数返回的结果作为变量a的值。

被调用的函数开始运行,创建一个局部变量myNum,将7作为myNum的值,然后执行函数体内的代码,使用return命令将newNum的值12返回给函数的调用者。这时,a的值变为12。

函数最大的作用体现在它可以重复使用。如下所示的3行代码产生3个不同的结果:

trace(myFunction(3));trace(myFunction(6));trace(myFunction(8));运行以上代码,你将得到结果8、11和13。

使用函数还有一个好处就是可以只改变函数中的一处,从而影响所有调用该函数的命令。

例如,将函数myFunction中的var newNum = myNum+5改成var newNum = myNum+7,上面3个调用该函数的命令的结果将变成10、13和15点语法的另一个用途是指定影片剪辑的属性。

如下面的语句将影片剪辑myMC的_alpha(透明度)属性设置为50%:

myMC._alpha = 50;你还可以在影片剪辑中使用点语法定位根(root)中的一个全局变量。

如果你在主时间轴中创建了一个全局变量globelVar,而要在影片剪辑中使用这个全局变量,可以使用如下的语句:

trace(_root.globleVar);stop:使影片停止在当前时间轴的当前帧中。

play:使影片从当前帧开始继续播放。

gotoAndStop:跳转到用帧标签或帧编号指定的某一特定帧并停止。gotoAndPlay:跳转到用帧标签或帧编号指定的某一特定帧并继续播放。

nextFrame:使影片转到下一帧并停止。

prevFrame:使影片回到上一帧并停止。

stop命令常常用在帧动作中,以使影片停止并等待用户控制。

其他命令常常用在按钮的事件处理函数中。

如果gotoAndPlay命令中只有一个参数,Flash将认为它代表某个帧;

如果有两个参数,第1个参数将作为场景名,第2个参数代表该场景中的帧。

要定位包含某一对象的上一级对象,可以使用关键字_parent。

如果一个影片剪辑是包含在主时间轴中,在影片剪辑中使用_parent和_root的效果是一样的。

如果影片剪辑与主时间轴相差两个层级,即当影片剪辑包含在另一个位于主时间轴中的影片剪辑中,这时在该影片剪辑中使用_parent指代的是它上一级的影片剪辑,而_root是指它上两级的主时间轴。在主时间轴中不能使用_parent,因为主时间轴没有上一级。

4、.详细了解GOTO语句

prevFrame()

跳至并停止在前一祯。

nextFrame()

跳至并停止在下一祯。

prevScene()

跳至并停止在前一场景的第1帧。nextScene()

跳至并停止在下一场景的第1帧。

gotoAndPlay([scene,] frame)

跳至scene场景(省略表示当前场景)的frame帧并播放。

gotoAndStop([scene,] frame)

跳至scene场景(省略表示当前场景)的frame帧并停止。

5、了解MC的各种可改写的属性

_x 中心点所在相对X坐标(象素单位)

_y 中心点所在相对Y坐标(象素单位)

_xscale 横向缩放比例,初始为100

_yscale 纵向缩放比例,初始为100

_rotation 相对旋转角度(度单位)

_width 相对显示宽度(象素单位)

_height 相对显示高度(象素单位)

_alpha 显示透明度(0~100)

_visible 是否可见

_focusrect 是否显示焦点框

_name 实例名称

6、三大纪律: 1>写代码时一定要用英文(如EN CH)输入法

2>必须要有唯物主义思想,没有加载的MC是不可以更改它的属

性,更不可以写代码去控制它。这个问题较难掌握,高手有时也会

犯,道理就是先有吃的才能请客吃,啥也没有请客吃什么呢

3>操作什么一定要选什么(实际上哪个软件也要这样)。在MX中加代

码时如不选,就一定要写明名称,实际上也是一种先择。

7、八项注意: 1>按钮不能盖着输入文本,动态文本和输入文本域不能盖着按钮

2>用loadMoie时LEVEL1及以上的文件尽量少用大隐型按钮

3>从一个文件中复制MC实例到别一个文件中时,尽量复制帧,而不能直接

复制实例,4>从一个文件中复制MC实例到别一个文件中时,要先把目标文件中的符

号库中原有的符号,装进资夹里,很多网友这个问题上上过当吧?

需要记住一个动作的作用时,可在动作面板中使用comment(注释)语句给帧或按钮动作添加注释。如果你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚本的正确理解。

在动作面板中选择comment动作时,字符”//“被插入到脚本中。如果在你创建脚本时加上注释,即使是较复杂的脚本也易于理解,例如:

on(release){ //建立新的日期对象 myDate = new Date();currentMonth=myDate.getMonth();//把用数字表示的月份转换为用文字表示的月份

monthName = calcMoth(currentMonth);year = myDate.getFullYear();currentDate = myDate.getDat();}

常量

常量有其值永不改变的属性。常数用大写字母列于动作工具箱中。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指键盘上的键。要测试用户是否在按Enter键,可使用下面的语句:

if(keycode()= =key.ENTER){ alert = ”你准备好了吗?“ controlMC.gotoAndStop(5);}

影片剪辑

1、load enterFrame load在整个动画中只加载一次,enterFrame不管是否有stop都要一直加载,直至关闭

onClipEvent(load){ var i = 0;} onClipEvent(enterFrame){ trace(i);i++;}

2、startDrag()(可做鼠标跟随)

用法

startDrag(target,[lock ,left , top , right, bottom])参数

target 要拖动的影片剪辑的目标路径。

lock 一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央(true),还是锁定到用户首次单击该影片剪辑的位置上(false)。此参数是可选的。

left、top、right、bottom 相对于影片剪辑父级坐标的值,这些值指定该影片剪辑的约束矩形。这些参数是可选的。返回 无。说明

函数;使 target 影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行了 startDrag()操作后,影片剪辑将保持可拖动状态,直到用 stopDrag()明确停止拖动为止,或直到对其它影片剪辑调用了 startDrag()动作为止。示例

若要创建用户可以放在任何位置的影片剪辑,可将 startDrag()和 stopDrag()动作附加到该影片剪辑内的某个按钮上。on(press){ startDrag(this,true);} on(release){ stopDrag();} 若在动画开始时影片剪辑跟随鼠标 onClipEvent(load){ Mouse.hide();startDrag(this, true, 0, 0, 550, 400);}

duplicateMovieClip 函数

duplicateMovieClip(target:String, newname:String, depth:Number): Void duplicateMovieClip(target:MovieClip, newname:String, depth:Number): Void 当 SWF 文件正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑中处于什么位置,在重复的影片剪辑中,播放头始终从第 1 帧开始。原始影片剪辑中的变量不会复制到重复的影片剪辑中。使用 removeMovieClip()函数或方法可以删除用 duplicateMovieClip()创建的影片剪辑实例。可用性:Flash Player 4;ActionScript 1.0 参数

target:Object所复制的影片剪辑的唯一标识符。depth:Number-所复制的影片剪辑的唯一深度级别。深度级别是所复制的影片剪辑的堆叠顺序。这种堆叠顺序很像时间轴中图层的堆叠顺序;较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个所复制的影片剪辑分配一个唯一的深度级别,以防止它替换已占用深度上的 SWF 文件。示例

在下面的示例中,将创建一个名为 img_mc 的新影片剪辑实例。将一个图像加载到该影片剪辑中,然后复制 img_mc 剪辑。所复制的剪辑名为 newImg_mc,这个新剪辑将移至舞台上,因此它不会与原始剪辑重叠,并且将同一图像加载到第二个剪辑中。this.createEmptyMovieClip(”img_mc“, this.getNextHighestDepth());img_mc.loadMovie(”http://www.xiexiebang.com/flash/images/image1.jpg“);duplicateMovieClip(img_mc, ”newImg_mc“, this.getNextHighestDepth());newImg_mc._x = 200;newImg_mc.loadMovie(”http://www.xiexiebang.com/flash/images/image1.jpg“);要删除重复的影片剪辑,可为名为 myButton_btn 的按钮添加以下代码。this.myButton_btn.onRelease = function(){ removeMovieClip(newImg_mc);};

eval 该变量或属性的值。如果表达式是对象或影片剪辑,则返回对该对象或影片剪辑的引用。如果无法找到表达式中列举的元素,则返回 undefined。

下面的示例使用 eval()为动态命名的影片剪辑设置属性。此 ActionScript 为三个影片剪辑(分别称为 square1_mc、square2_mc 和 square3_mc)设置 _rotation 属性。

for(var i = 1;i <= 3;i++){ eval(”square“+i+”_mc")._rotation= 5;} 就可以使square1_mc、square2_mc 和 square3_mc角度都变成5

简单来说就是用字符串或者变量组合起来得到对象,变量..

下载DSP-C代码优化总结word格式文档
下载DSP-C代码优化总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机实验代码总结

    编者:方园 单片机实验代码集合(by fangyuan) 1.多字节累加程序: ORG 0000H LJMP MAIN ORG 0030H ;将加数和被加数送到指定地址 MAIN: MOV 20H,#45H MOV 21H,#74H MOV 30H,#67......

    域代码编写总结

    word域代码详解 域的基本操作 Ctrl+F9 插入域 Ctrl+Shift+F9把域转为纯文本 Shift+F9 切换为域代码显示 十个特殊指令(域开关) 1、数组a 2、括号b 3、平移d 4、分式f 5......

    数据库上机实验总结(含代码)

    实验一 (1)无条件单表查询 select sname NAME,'year of birth:' BIRTH,2004-sage BIRTHDAY,LOWER(sdept) DEPARTMENT FROM student; (2)有条件单表查询 SELECT sname,sdept,sage......

    Excel VBA常用代码总结1(精选合集)

    Excel VBA常用代码总结1 改变背景色 Range("A1").Interior.ColorIndex = xlNone ColorIndex一览   改变文字颜色 获取单元格 Range("A1").Font.ColorIndex = 1 Cells(1, 2)......

    天英网络培训教你做SEO优化懂代码

    天英网络营销学院 天英网络培训教你做SEO优化懂代码 很多人认为做SEO优化不需要懂代码,那是程序员的事,只要懂得抓住优化网站细节就ok,排名上去就ok,这道理是对的!在一个分工明细......

    JAVA网站开发与优化如何提高代码运行效率

    JAVA网站开发与优化如何提高代码运行效率 可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,网站优化的目的就是让程序用尽可能少的资源完成预定的任务。网站优化通常......

    部门代码

    部门代码 总经理:GMD 行政人事部:AD 技术部:TD 发展部:RDD 宣传部:PD 策划部:SD 工程部:ED 造价部:EC 财务部:ACD 投融资部:FD 战略计划部:SPD 招标合约部:BCD 审计部:ADD 招商部:MD 研......

    代码检查

    代码检查 摘要:代码检查是白盒测试的一种静态测试方法,是众多软件测试方法中发现软件缺陷最有效的方法之一。本文结合国内外学者在相关领域的研究情况,介绍代码检查相关的基本......