2006年08月23日

        A 箭头  L 套索
  N 直线  T 文字
  O 椭圆  R 矩形
  P 铅笔  B 笔刷
  I 墨水瓶 U 油漆桶
  D 滴管  E 橡皮擦
  H 移动  M 放大镜

  CTRL+N 新建一个影片
  CTRL+O 打开一个影片
  CTRL+SHIFT+O 以图库打开影片
  CTRL+W 关闭影片文件
  CTRL+S 保存影片文件
  CTRL+SHIFT+S 影片文件另存为
  CTRL+R 读入文件
  CTRL+ALT+SHIFT+S 转存为影片
  CTRL+SHIFT+F12 文件发布设定
  SHIFT+F12 文件发布
  F12 预览
  CTRL+P 文件打印
  CTRL+Q 退出

  CTRL+Z 撤消上一步
  CTRL+Y 重做上一步
  CTRL+X 剪切
  CTRL+C 复制
  CTRL+V 粘贴
  CTRL+SHIFT+V 帖于特定位置
  DELETE 清除
  CTRL+D 即时复制
  CTRL+A 选择所有
  CTRL+SHIFT+A 取消所有选择
  CTRL+ALT+C 复制影格
  CTRL+ALT+V 粘贴影格
  CTRL+E 组件与场景之间切换

  HOME 跳至最前面
  PAGE UP 跳至上一个
  PAGE DOWN 跳至下一个
  END 跳至最后面

  CTRL+1 显示100%
  CTRL+2 显示影格
  CTRL+3 显示全部
  CTRL+ALT+SHIFT+0 显示外框
  CTRL+ALT+SHIFT+F 快速显示
  CTRL+ALT+SHIFT+A 消除锯齿
  CTRL+ALT+SHIFT+T 消除文字锯齿
  CTRL+ALT+T 显示时间轴
  CTRL+SHIFT+W 显示工作区域
  CTRL+ALT+SHIFT+0 显示标尺
  CTRL+ALT+SHIFT+G 显示格线
  CTRL+ALT+G 靠齐
  CTRL+ALT+G 显示形状提示点

  F8 转换为组件
  CTRL+F8 新建组件
  F5 插入影格
  SHIFT+F5 删除影格
  F6 插入关键影格
  F7 插入空白影格
  SHIFT+F6 清除关键影格

  CTRL+I 修改组件属性
  CTRL+F 修改影格属性
  CTRL+M 修改影片属性
  CTRL+T 设置字体属性
  CTRL+SHIFT+T 设置段落属性
  CTRL+SHIFT+P 修改文字样式为正体
  CTRL+SHIFT+B 修改文字样式为粗体
  CTRL+SHIFT+I 修改文字样式为斜体
  CTRL+SHIFT+L 修改文字样式居左
  CTRL+SHIFT+C 修改文字样式居中
  CTRL+SHIFT+R 修改文字样式居右
  CTRL+SHIFT+J 修改文字样式对齐行
  CTRL+ALT+LEFT 修改文字字距较窄
  CTRL+ALT+RIGHT 修改文字字距较宽
  CTRL+ALT+UP 重新设定
  CTRL+ALT+F 设置文字区域属性
  CTRL+ALT+S 旋转和缩放
  CTRL+SHIFT+Z 删除变形
  CTRL+SHIFT+UP 排列顺序移至最前
  CTRL+UP 排列顺序置前
  CTRL+DOWN 排列顺序置后
  CTRL+SHIFT+DOWN 排列顺序移至最后
  CTRL+ALT+L 锁定
  CTRL+ALT+SHIFT+L 全部解除锁定
  CTRL+ALT+SHIFT+C 曲线最佳化
  CTRL+K 对齐
  CTRL+G 结合群组
  CTRL+SHIFT+G 解散群组
  CTRL+B 打散组件

  ENTER 影片播放
  CTRL+ALT+R 倒带

  > 影格往前
  < 影格往后

  CTRL+ENTER 测试影片
  CTRL+ALT+ENTER 测试场景
  CTRL+ALT+A 启动影格动作
  CTRL+ALT+B 启动按钮
  CTRL+ALT+M 静音

  CTRL+ALT+N 开新窗口
  CTRL+ALT+I 查看对象面板
  CTRL+L 打开图库窗口

常听说这样的宣传:有事找警察。但是30多年来,我一直是守法公民,也没什么事,不与警察打什么交道。直到今年暑假,我才终于有事,找到了警察,结果很失望,什么事也没办成,还浪费了我很多时间。

今年7月16号,我和妻子来到了美丽的伊春。第二天我们到汽车客运站,打听返回汽车的时刻。客运站的工作人员也真是太气人,问谁都说不知道。问事处的人让我们到售票窗口去问,而售票窗口的人说问时间要到问事处,返回去后问事处的人,还说只有卖票的知道时刻。在售售票口排了长队,终于轮到我说话,那人又说叫我交钱买票,这样才能看到时刻。可是我只是想问问发车时刻,没有想提前10多天就买票。售票员还说,只看时刻不行,微机只要显示出发车时间,就证明车票已经卖出,所以必须交钱。这女人这是拿我不识数:哪有这样的电脑,看看发车时间,就证明票已卖出?她不点击“确定”,不可能车票就自动卖出!这样在售票口和问事处之间往返了好几趟,还是没有问到时刻。也就是在这样的折腾过程中,我的钱被小偷偷走了:200多元钱还有一张有两千多元的存折。

当时我太生气,于是决定找警察。可是客运站警察值班室了没人,没办法就拨打了110,110指挥中心的人在电话里说,客运站是归某某派出所管,让我们去那个派出所报案。走了500多米,找到了那个派出所,可是里面只有两个年轻人,说是替别人值班,不是刑侦科的,不知道怎么处理。只是问问事情经过,记录上姓名就完事了。最后那年轻人建议我们找客运站站长。

回到客运站,在二楼找到了站长。站长给我的印象可不算太好:长得有点像电影里演的土匪,说话的口气也像,穿个白衬衫,也没系扣,坐在那里面扇扇子。我们只说了几句话,他就很不耐烦,让我们到警察值班室等着。他打电话找来一个也不知道是干什么的老头接待了我们。那老头进门就问:“两口子是因为什么打架啊?”晕!这是哪跟哪啊?我说:打什么架?我是在你们客运站丢钱了,你们警察是不是有责任帮我找啊?最后老头告诉我们,这里的警察今天有事不在,他是某某派出所的,要我们到那里说明情况,于是又指给我们一个新的派出所。

按照他说的走了200多米,找到了他说的那个派出所。当我们把情况说明后,屋里的三个人都说:你们找错了,客运站外面的治安归我们管,里面不归我们管。同时你说的那个客运站的警察也不是我们派出所的。这可把我们弄糊涂了,这是怎么回事?推来推去谁都不管。这是妻子说:“不是说有事找警察嘛,你们都一个系统的,怎么能不管呢?”这时有个戴眼镜的警察,长得也挺刁的,立刻就生气了,开始赶我们走。妻子说:“你们警察怎么这样?我们走了好几个地方,把我们支来支去。我用你们的电话再拨个110,行吧?”可是那个所长不同意使用他们的电话,然后对那个戴眼镜的说:“先给他们记录一下。”戴眼镜的那人很不情愿。问我姓名,又问你俩谁丢钱了。妻子补充一句:“我俩是一家的,是我俩丢的。”就这一句话,又出麻烦了。那戴眼镜的警察突然来了脾气:“谁问你了?你叫喊什么。”妻子说:“我也没大声说,只是告诉你我俩是一家的,有什么毛病吗?”那个警察把笔一摔,记录本一合,走了。嘴里还嘟哝着:“办点正经事吧。”我俩也不走,就在那里坐着。过了好一阵子,那个所长出来了,说:“客运站的警察帮你联系到了,你回客运站等他吧。”

这样我俩又回到二楼的站长室,可是站长又叫我们到警察值班室等。过了一会值班的警察终于来了。喝得满嘴酒气,又开始记录。也不知喝多了还是耳朵不好使,每句话总是说好几遍才能听清楚。记录完,就开始向我们解释:他不得不离开的原因是中央有领导来伊春(后来听说是魏健行来视察),几乎所有警力都调用了,执行保卫工作。局长让他去开车,他也没办法,不得不去。同时又告诉我们,就算有警察在这里,丢了东西也很难找回来,只有自己看住了。唉,跟没说一样。最后他把我们领到监控的微机旁,让我们自己看监控录像,他说他下午还得给局长开车,必须走了。可是录像中早晨7点到10点之间的录像没有,只有10点往后的。我们看了一阵子,连我们自己的身影都没看见,因为丢钱的事儿就是10点前发生的。

丢钱后五分钟就开始报警,结果折腾了3个多小时,就这样不了了之了。这就是我平生第一次与警察打交道,得出的结论就是:有事别找警察—-没用

2006年08月16日

〓〓新手常见问题总汇〓〓:flashempire- -

                                      

 

http://file.flashempire.com/showthread.php?t=240613

 

1

读取文件时出现问题,一个或多个文件没有成功导入

flash不支持不标准的mp3格式
Flash 只能导入采样比率为 11 kHz、22 kHz 或 44 kHz,8 位或 16 位的声音

解决方法:用声音编辑软件编辑,重新输出为标准的mp3格式,或者重新去找一个声音文件
声音编辑软件如SoundForge GoldWave CoolEdit

flash支持的声音文件:
WAV(仅限 Windows)
AIFF(仅限 Macintosh)
MP3(Windows 或 Macintosh)
如果系统上安装了 QuickTime 4 或更高版本,则可以导入这些附加的声音文件格式:

AIFF(Windows 或 Macintosh)
Sound Designer II(仅限 Macintosh)
只有声音的 QuickTime 影片(Windows 或 Macintosh)
Sun AU(Windows 或 Macintosh)
System 7 声音(仅限 Macintosh)
WAV(Windows 或 Macintosh)
==========以上摘自flashMX2004帮助文档====

附上的图片
 

 

 

 

2

为预料的文件格式

打不开网上下载的fla源文件,提示“为预料的文件格式”

flash版本低了 目前(2005/3/19)最新版本flashMX2004 V7.2

3
载入外部文本文件中文出现乱码

文本另存为编码utf-8的
或者System.useCodepage=true放在_root第一帧
4
帮你加:
在按钮上关联一个网络链接的方法
on (release)
{getURL("你想关联的网址");}

//红色为输入部分
5
加载方面

加载外部swf到层

PHP代码:

onClipEvent (load) {
    
this.gotoAndstop(1);
}
onClipEvent (enterFrame) {
    
now = level2.getBytesLoaded()
    
all = level2.getBytesTotal()
             
loaded = int(now/all*100);
    
this.gotoAndStop(loaded);
    
this.bfb = loaded+"%";
    if (
now == all) {
        
_root.gotoAndPlay("begin");
    }
}

加载到MC

PHP代码:

this.onEnterFrame = function() {
    if (
this.getBytesLoaded()<this.getBytesTotal()) {
        
Total = this.getBytesTotal()/1000;
        
Received = this.getBytesLoaded()/1000;
        
Percentage = (Received/Total)*100;
        
loaded = int(Received/Total*100);
        
percent = loaded+"%";
        
_root.player.musicper = this.percent;
        
_root.player.musicbar.gotoAndStop(int(Percentage));
    } else {
        
gotoAndPlay(2);
        
this.onEnterFrame = null;
    }
};
stop();

加载记事本文件

PHP代码:

mytxtData = new LoadVars();

mytxtData.onData = function(rw) {
    if (
rw.indexOf("\r\n")>-1) {
        
trace("oker ");
    }
    
a_txt.text = replacePunc(rw);
};

function replacePunc(str) {
    var
tempArray = str.split("\r\n");
    var
tempstr = new String();
    for (var
i = 0; i<tempArray.length; i++) {
        
tempstr += tempArray[i]+newline;
    }
    return
tempstr;
}

System.useCodepage = true;
mytxtData.load("mydata.txt");

加载XML文件

PHP代码:

var doc1 = new XML();
//---------------------
doc1.ignoreWhite = true;
doc1.load("data.xml");
doc1.onLoad = function(success) {
    if (
success) {
        
e = doc1.firstChild.firstChild;
        
a = e.attributes.kind;
        
b = e.childNodes[0].firstChild.nodeValue;
        
c = e.childNodes[1].firstChild.nodeValue;
        
d = e.childNodes[2].firstChild.nodeValue;
        
text1 = a+"----------"+b+"----------"+c+"----------"+d;
    } else {
        
trace("载入失败");
    }
};
stop();

直接载入图片

PHP代码:

pic = new Array();
for (
i; i<9; i++) {
    
pic[i] = "mypic"+i+".jpg";
    
loadMovie(pic[i], "mc"+i);
    
trace(pic[i]);
}

载入MP3音乐(直接)

PHP代码:

myMusic = new Sound(_root.mySound);
myMusic.loadSound("song1.mp3", false);
myMusic.setVolume(130);
var
playing = false;
preloading = true;
this.onEnterFrame = function() {
    
mTotal = _root.myMusic.getBytesTotal();
    
mLoaded = _root.myMusic.getBytesLoaded();
    if (
preloading == true && mLoaded > 0){
        
mPercent = Math.round((mLoaded/mTotal)*100);
        
_root.preloader._visible = true;
        
_root.preloader.mFiller._xscale = mPercent;
        if(
mPercent >= 100){
            
myMusic.start(0,999);            
            
preloading = false;
            
playing = true;
            
_root.preloader._visible = false;
            
delete this.onEnterFrame;
        }
    }
};

6
flash中的"关闭"按纽

关闭flashPlayer播放器

代码:
btn.onRelease=function(){fscommand('quit',true)}

关闭网页窗口

代码:
btn.onRelease=function(){window.close();}//IE6有"是否关闭"提示

代码:
btn.onRelease=function(){javascript :o pener=null;window.close();}//无提示关闭

关闭嵌在网页里的广告
用js的隐藏层
javascript:

代码:
document.all.myFlash.style.display=none;//myFlash是flash所在object的id

或者

代码:
btn.onRelease=function(){_root._visible=0}

btn为按纽的实例名

7
qustion:在按钮中添加音乐
如下图方法操作,先将音乐文件导入(ctrl+r)到库中,在元件的按钮中的,经过帧上(先插关键帧),将库中的音乐文件拖入
注意:声音"属性面板"中的同步选项应改为"事件",声音才能起作用

附上的图片
 

8
如何利用场景中的影片剪辑中的按钮到达另一个场景
question:在场景1中采用了一个动画剪辑,这个动画剪辑中包含了一个按钮,想在这个按钮上设定动作“转到场景2,并播放第一帧”,但是使用“gotoandstop("场景2",1)”后,实现不了效果,单击按钮后到达的是这个动画剪辑的第一帧。
answer:
首先考虑
路径问题:
on(release)
{
_root.gotoAndPlay("label");
}
其中label是要转到桢的标签,可以不在同一场景
gotoAndPlay("场景1",1)这种写法 在mc里的按钮上可能出现问题

其次,有这么几种方法
方法一:(使用telltarget命令)

按钮上的as为:
on (release) {
tellTarget ("/") {
gotoAndPlay ("场景 1", 1);
}
}
方法二(用gotoandplay命令)
主场景2中的mc放到场景2的时间轴上
按钮的as: on release {
      gotoAndPlay("场景1",1)
       }
并且在最后一帧加stop()
问题就可以解决了:
方法三(利用路径_root.gotoandplay())

第二个场景2里面只有一个mc,在这个mc的最后一帧是stop 
和一个replay按钮
按钮的as:_root.gotoAndPlay(1)
【即告知按钮回到场景1的第一帧】

方法四(给场景起不同的名字)
如果你的as这样写:
第二个sence里面只有一个mc,在这个mc的最后一帧是stop 和一个replay按钮
按钮的as: on release {
      gotoAndPlay("sence1",1)
       }
结果按下后却是从这个mc的第一帧开始播放,而不是从sence1的第一帧
这是因为主场景的名字默认为senceN
MC里也可以有多个场景,而mc也是默认为senceN
所以当你在MC用上gotoAndPlay ("scene1", 1);时,指的是所在场景中MC里的第一帧,
而不是主场景
解决的方法,就是给场景定义不同的名字
scene1我们改名为:主场景
scene2我们改名为:次场景1
正确的as应该为:
on (release) {
tellTarget (_root) {
gotoAndPlay (1);
}
}
如果想实现按钮点击后从次场景播放
就可以在按钮上写上:
on (release) {
tellTarget (_root.次场景) {
gotoAndPlay (1);
}
}
方法五(利用标签label)
我们在控制动画的时候一般也不是从开始播放,
可能是希望从某个场景的某一个关键帧开始播放,那么标签是
最好的实现方法;
例如我们希望点击上面的按钮的时候让动画从主场景中的label1开始
播放,那么按钮上的as应该为:
on (release) {
tellTarget (_root) {
gotoAndPlay ("label1");
}
例如有3个场景,我们希望点击上面的按钮的时候让动画从次场景1中的label4开始
播放,那么按钮上的as应该为:
on (release) {
tellTarget (_root) {
gotoAndPlay ("次场景 1", "label4");
}
}

}
}
如果想实现按钮点击后从次场景播放
就可以在按钮上写上:
on (release) {
tellTarget (_root.次场景) {
gotoAndPlay (1);
}
}
方法六: (使用loadMovie命令)
先把这些小场景和主场景放在同一层目录下,给它们都写上英文名字(必须是英文),然后在主场景的按钮上写下以下AS
on (release) {
loadMovie("场景名.swf",1);
}

9
一本正经 响应键盘的一般方法介绍

这些是以前整理的,现在发上来,希望对新手有所帮助……响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法也就是 主要的四种,分别是: 1、利用按钮进行检测 2、利用KEY对象
3、利用键盘侦听的方法 4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘
只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果, 下面我就结合理论和自己的想法简要的介绍一下。

第一种响应键盘的方法:利用按钮进行检测来实现响应键盘在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的X键时输出窗口中将提示: X is pressed
在按钮上加上:

on (keyPress "x") {
trace("X is pressed");
}但是要注意的是:检测键盘上的字母键时,字母都应为小写。如果要检测键盘中的特殊键, Flash中有一些专门的代码来表示它们,下面列出了一些常用的功能键的表示代码:
<Left> <Right> <Up> <Down> <Space <Home> <End> <Insert> <PageUp> <PageDown>
<Enter> <Delete> <Backspace> <Tab> <Escape>
如要检测键盘上的<Left>键,可以使用下面的ActionScript:
on (keyPress "<Left>") {
trace("Left is pressed");
} 另外,你可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,这使 您可以为按钮定义自己熟悉常用的快捷键,如下所示:
on (release, keyPress "<Left>") {
_root.myMC.prevFrame();
}
on (release, keyPress "<Right>") {
_root.myMC.nextFrame();
}上面的第一个语句实现单击按钮或按键盘上的左方向键,控制影片剪辑myMC回退1帧,
而上面的第二个语句实现单击按钮或按键盘上的右方向键,控制影片剪辑myMC前进1帧。

最后给出实例原文件:方法1.fla

方法二

第二种响应键盘的方法:利用Key对象来实现响应键盘的操作

利用按钮检测按键动作很有效,但是并不利于检测持续按下的键,所以不适合于制作某些通过键盘控制的游戏。
这时,您就需要用到Key对象。Key对象包含在动作面板的“对象”/“影片”目录下面,它由Flash内置的一系列方法、常量和函数构成。使用Key对象可以检测某个键是否被按下,如要检测左方向键是否被按下,可以使用如下ActionScript:

if (Key.isDown(Key.LEFT)) {
trace("The left arrow is down");
}函数Key.isDown返回一个布尔值,当该数中的参数对应的键被按下时返回true,否则返回false。常量Key.LEFT代表键盘上的左方向键。当左方向键被按下时,该函数返回true。
Key对象中的常量代表了键盘上相应的键,下面列出了一些基本的常量:
一些功能键的表示:
Key.BACKSPACE Key.ENTER Key.PGDN
Key.CAPSLOCK Key.ESCAPE Key.RIGHT
Key.CONTROL Key.HOME Key.SHIFT
Key.DELETEKEY Key.INSERT Key.SPACE
Key.DOWN Key.LEFT Key.TAB
Key.END Key.PGUP Key.UP
以上是键盘上的功能键,那么如何表示键盘上的字母键呢?
Key对象提供了一个函数Key.getCode来实现这一功能,如下所示:
if (Key.isDown(Key.getCode("x"))) {
trace("X is pressed");
}上面脚本的意思就是,利用Key.getCode函数来告诉系统你是否按下了x键,如果按下了x键以后,函数Key.isDown则会返回true,在输出窗口就会输出X is pressed。

最后给出实例原文件:方法2.fla

方法三

第三种响应键盘的方法:利用键盘侦听的方法来实现响应键盘(个人习惯用这种方法)

假设在影片剪辑的onClipEvent(enterFrame)事件处理函数中检测按键动作,而影片剪辑所在的时间轴较长,或计算机运算速度较慢,就有可能出现这种情况:即当在键盘上按下某个键时还未来得及处理onClipEvent(enterFrame)函数,那么按键动作将被忽略,这样的话,很多你想要的效果就会无法实现了。
另外,还有一个需要解决的问题就是,在某些游戏(如射击)中,我们需要按一次键就执行一次动作(发射一发子弹),即使长时间按住某个键不放也只能算作一次按键,而Key对象并不能区别是长时间按住同一个键还是快速地多次按键。
所以如果要解决这个问题,就需要用到键盘侦听的方法。你可以使用 “侦听器(listener)”来侦听键盘上的按键动作。
要使用侦听器之前,首先需要创建它,你可以使用如下所示的命令来告诉计算机你需要侦听某个事件:

Key.addListener(_root);Key.addListener命令将 主时间轴 或 某个影片剪辑 作为它的参数,当侦听的事件发生时,可以用这个参数指定的对象来响应该事件。
上面的代码指定主时间轴来响应该事件。要让主时间轴对该事件作出响应,还需要设置一个相应的事件处理函数,否则设置侦听器就没有什么意义了。
键盘侦听的事件处理函数有两个:onKeyUp和onKeyDown,如下所示: Key.addListener(_root);
_root.onKeyUp = function() {
trace(Key.getAscii());
};//代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的Ascii码
当然,你也可以使用影片剪辑作为侦听键盘的对象,只需要使用影片剪辑的路径代替_root作为Key.addListener命令的参数就可以了。
比如下面代码: Key.addListener(_root.mc);
_root.mc.onKeyUp = function() {
trace(Key.getAscii());
};//代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的Ascii码,意思差不多,但是键盘侦听对象不同,一个是影片mc,一个是主时间轴。

最后给出实例原文件:方法3.fla

方法四

第四种响应键盘的方法:利用影片剪辑的keyUp和keyDown事件来实现响应键盘

最后一种方法很容易被忽视,但是也有一定的应用价值,最重要的是把概念弄清楚。
影片剪辑包含两个与键盘相关的事件keyUp和keyDown,使用它们也可以实现对按键事件的响应
例如下面的代码:

onClipEvent (keyDown) {
trace(Key.getAscii());
}//当按下键盘上的一个键的时候,输出窗口将输出按下的这个键的Ascii码值。
函数Key.getAscii表示返回与按键相对应的ASCII码,其中 ASCII码是一个整数,键盘上的每个字符对应一个ASCII码,如字母A对应的ASCII码为65,B对应的ASCII码为66,a对应的ASCII码为97, b对应的ASCII码为98,+ 对应的ASCII码为43等。需要注意的是:只有字符键才有ASCII码,键盘上的功能键是没有ASCII码的。
如果我想在输出窗口中输出与按键相对应的字符,那怎么办?
这时候,你可以使用String对象的fromCharCode函数将ASCII码转换成字符,如将上例的代码改成如下所示:
onClipEvent (keyDown) {
trace(String.fromCharCode(Key.getAscii()));
};//意思就是说,当按下键盘的一个键,输出按下的这个键相对应的字符,当然除了功能键。
关于String对象的详细解释,大家可以查看动作面板的“对象”/“核心”目录下面。

2006年08月07日

Prefetch
Windows Vista的SuperFetch构建在由Windows XP引入的被称为Prefetch的技术之上,所以在了解SuperFetch和EMD之前,最好让我们先谈谈它。首先,预取是操作系统实际需要之前,从磁盘向内存中导入关键数据和代码段的进程。记住了这一点,让我们大致了解预取是如何工作的。
为了让整个预取操作切实地提高性能,Windows XP缓存管理器在系统启动过程中以及在各种应用程序被导入的时候,监视数据在磁盘和RAM之间以及在RAM和虚拟内存之间的移动。当缓存管理器监视这些事件时,它构造目录和每个应用程序或进程引用的所有文件的映射。这些映射被保存到\Windows\Prefetch文件夹扩展名为.pf的文件中。
在这些映射文件被创建之后,缓存管理器将在系统启动以及导入应用程序的时候使用它们以提高效率。更明确地,缓存管理器会拦截将被导入的每一个进程或应用程序并且查看\Windows\Prefetch文件夹以确定是否存在相应的映射。如果存在,缓存管理器将指派文件系统立即访问映射中的目录或文件引用。然后缓存管理器将警告内存管理器并告诉它使用映射文件中的信息向内存中导入数据或代码。当这个预取操作完成之后,缓存管理器将允许应用程序或进程继续导入。在应用程序或进程这样做的过程中,它会发现需要的大部分文件和数据已经存在于内存中,因此减少了磁盘访问量并且使得应用程序或进程导入或响应得更迅速。
为了进一步提高这个预取操作的效率,Windows XP会定期地分析映射文件的内容,编辑一个目录和文件列表,以导入的顺序组织它们,并且将这些信息保存在\Windows\Prefetch文件夹的名为Layout.ini的文件中。然后它会安排磁盘碎片整理程序定期运行并且使用Layout.ini文件中的信息以重新部署所有目录文件,让它们排列在磁盘中临近的区域。

SuperFetch
既然你知道了Windows XP的Prefetch技术是如何工作的,你就了解了Windows Vista的SuperFetch技术工作原理的70%。作为Windows XP的Prefetch的下一版本,SuperFetch包括了Prefetch的所有功能并做的更多。
首先,SuperFetch克服了Windows XP的Prefetch中的一个大缺点。正如我前面解释的,Prefetch通过导入大部分由内存中一个应用程序或进程需要的文件或数据,所以可以在需要时更迅速地访问它们。然而,由于这些文件和数据存在于内存中,所以它们受控制虚拟内存的规则支配。换句话说,当其他应用程序需要访问内存,任何预取的数据会被移出到硬盘上的页面文件中。当再次需要它时,必须将它从页面文件中移回到内存,这当然抵消了性能增强。
SuperFetch更进一步地保证你获得对性能增强的最有效使用。除了构造我前面提到的映射文件之外,SuperFetch还会构造你使用的应用程序的描述文件,它包括你在何时使用和使用的频率等信息。然后,SuperFetch将跟踪描述文件中的应用程序并且记录任何预取数据在何时被移出到页面文件中。SuperFetch将监视引起预取数据被移出到页面文件的应用程序描述文件,并且应用程序一完成,它就将预取数据取回到内存中。所以当你转到访问应用程序,预取数据将在内存中再次可用而且应用程序会快速响应。

届数

总统

任期(年)

所属党派

1

乔治·华盛顿

1789-1797

联邦党

2

约翰·亚当斯

1797-1801

联邦党

3

托马斯·杰斐逊

1801-1809

民主共和党

4

詹姆斯·麦迪逊

1809-1817

民主共和党

5

詹姆斯·门罗

1817-1825

民主共和党

6

约翰·亚当斯

1825-1829

民主共和党

7

安德鲁·杰克逊

1829-1837

民主党

8

马丁·范·布伦

1837-1841

民主党

9

威廉·哈里森

1841-1841

辉格党

10

约翰·泰勒

1841-1845

辉格党

11

詹姆斯·波尔克

1845-1849

民主党

12

托卡里·泰勒

1849-1850

辉格党

13

米勒德·菲尔莫尔

1850-1853

辉格党

14

弗兰克林·皮尔斯

1853-1857

民主党

15

詹姆斯·布坎南

1857-1861

民主党

16

亚伯拉罕·林肯

1861-1865

共和党

17

安德鲁·约翰逊

1865-1869

共和党

18

尤利塞斯·格兰特

1869-1877

共和党

19

拉瑟福德·海斯

1877-1881

共和党

20

詹姆斯·加菲尔德

1881-1881

共和党

21

切斯特·阿瑟

1881-1885

共和党

22

格罗弗·克利夫兰

1885-1889

民主党

23

本杰明·哈里森

1889-1893

共和党

24

格罗弗·克利夫兰

1893-1897

民主党

25

威廉·麦金利

1897-1901

共和党

26

西奥多·罗斯福

1901-1909

共和党

27

威廉·塔夫特

1909-1913

共和党

28

伍德罗·威尔逊

1913-1921

民主党

29

华伦·哈定

1921-1923

共和党

30

卡尔文·柯立芝

1923-1929

共和党

31

赫伯特·胡佛

1929-1933

共和党

32

富兰克林·罗斯福

1933-1945

民主党

33

哈里·杜鲁门

1945-1953

民主党

34

德怀特·艾森豪威尔

1953-1961

共和党

35

约翰·肯尼迪

1961-1663

民主党

36

林顿·约翰逊

1963-1969

民主党

37

理查德·尼克松

1969-1974

共和党

38

杰拉尔德·福特

1874-1977

共和党

39

詹姆斯·卡特

1977-1981

民主党

40

罗纳德·里根

1981-1989

共和党

41

乔治·布什

1989-1993

共和党

42 比尔·克林顿 1993-2001 共和党
43 乔治 W · 布什(小布什) 2001- 共和党