【什么是CFI】
CFI(Common Flash Interface),是JEDEC(Joint Electron Device Engineering Council,电子器件工程联合委员会)制定的一个接口,
用来帮助程序读取Flash的制造商ID和设备ID,确定Flash的大小,获得flash的各个物理特性,比如block块的擦除时间等等。
【为什么需要这个CFI】
在应用CFI之前,Flash器件的有关信息都储存在系统软件的表格中。当有新的器件发布时,一般必须修改软件来添加该器件的描述信息。
CFI出现后,工程师们正在利用CFI来构建代码,它不仅能够运行在现在的Flash存储器上,而且随时准备着应用在下一代的低成本版本上。
这使得原始设备制造商能够在低成本Flash存储器设备可用时使用它而不必重写代码。
由于生产Flash Memory的半导体制造商众多,不同厂商Flash Memory产品的操作命令集
和电气参数又千差万别,这些人在设计硬件的时候,已经在阵脚的兼容性等方面,
做了足够多的文章,做得很好了,但是与此对应的软件方面,由于硬件升级,软件都要改动很大,
这给Flash Memory的开发设计人员和OEM制造商带来许多不便。
为了对现有的Flash Memory的产品进行升级或使用其它公司的Flash Memory产品替换,
必须对原有的程序代码和硬件结 ......
由于NAND FLASH擦除时,只能按按块擦除,因此在写扇区时,
首先要擦除一个块。在擦除块前,必须将块内其他数据复制出来,
由于一个块比较大(128KB),无法在MCU内开辟如此大的缓冲区。
只好借助该NAND FLASH内的页复制命令,将原来的块暂时复制到
一个交换用的交换块中。但是如果仅用一个块作为交换的话,它
就会被频繁擦写,因而寿命会大大降低。所以在该系统中,保留了
10个块用来作为交换区,轮流使用。另外对扇区的连续写进行了
优化,当连续写扇区时,就不必每次重复上面的操作,只有当地址
跨块时,才需要重新擦除。连续写扇区的实现原理如下:当检测到
扇区地址跨块时,就把原来的整块数据复制到交换块中,然后将
该块内当前所写地址的前面部分页面复制到原来的块中,接着就从
交换块中取出当前扇区地址所在页(使用页复制-随机写入命令),
再把一个扇区的数据写入,并接着写入其他扇区,当扇区地址跨页
时,就把该页写入到原来的块中,直到扇区被写完(当然如果写
的过程中跨块了,还需要重复前面的块擦除以及复制过程)。接着
把交换块中剩余的页再复制回原来的块中,这样一个连续写过程就
完成了。
因为NAND FLASH在生产和使 ......
(1)以“事件”方式开始声音:独立于时间轴进行完整的播放。即使SWF文件已经停止,声音播放也会继续。这种方式主要用于交互按钮。
(2)以“开始”方式开始声音:与“事件方式”功能相近,但必须是前一个声音播放结束,才可以开始播放下一个声音。这种方式主要用于背景音效。
(3)以“停止”方式开始声音:使指定的声音停止。使用“事件”或者“开始”方式启动了声音之后,如果希望在声音播放结束前强制静音,就可以使用“停止”方式。
(4)以“数据流”方式开始声音:“数据流”方式的声音将会严格与时间轴同步——如果影片在播放,就播放声音;如果影片暂停,声音就停止。这种方式主要用于MV和小品的制作。 ......
这本书主要是讲性能优化的!总共只有 85页,蛮少的@^_^ ! 废话不多说:
目录
Introduction
Conserving memory
Minimizing CPU usage
ActionScript 3.0 performance
Rendering performance
Optimizing network interaction
Working with media
SQL Database performance
Benchmarking and deploying
网络版地址: http://help.adobe.com/en_US/as3/mobile/index.html
pdf下载地址: http://help.adobe.com/en_US/as3/mobile/flashplatform_optimizing_content.pdf ......
1、用panel,label,button,textinput组建布局,如下图:
2、设用户名、密码、验证码所对应的textinput的id分别为userName、pasWord、inVal;设用于显示验证码的label组建的id为:val.
布局代码如下:
<s:Panel x="126" y="98" width="250" height="200" id="login" title="用户登录" includeIn="login">
<s:Label x="26" y="21" text="用户名:"/>
<s:Label x="26" y="51" text="密 码:"/>
<s:TextInput id="userName" x="82" y="19"/>
<s:TextInput id="pasWord" x="82" y="46"/>
<s:Button x="26" y="104" label="提交"/>
<s:Button x="140" y="104" label="重设" />
<s:Label x="26" y="79" text="验证码:"/>
<s:TextInput x="82" y="73" width="52" id="inVal"/>
<s:Label x="140" y="80" id="val" color="red"/>
<s:Button x="178" y="73" label="换" width="32"/>
</s:Panel>
3、 ......
对于需要累计执行的特效或对象,如tween,他是在给定的时间内不断运行,一旦在函数中定义tween 函数结束时,可能会回收了tween 造成tween不能跑完,定要注意,错误代码如下: 尤其是函数中定义的 package {
import flash.display.Sprite;
import fl.transitions.Tween;
import fl.transitions.easing.None;
import flash.filters.GlowFilter;
public class darkShadow extends Sprite {
public function darkShadow() {
init();
}
......