制作思路:
基本思路就在于改变文字对象的Z坐标。而对于文字朝观众迎面而来的效果,实例上是将观众所在的位置制作了一个camera对象,来模拟照相机的功能,即文字离观众越近,文字越大,然后不断改变camera对象和文字在Z轴方向上的距离。
1.创建文字对象
首先制作响应鼠标单击的按钮元件,要求该按钮透明。
(1) 新建文档,定义背景为黑色,大小为600*337像素。
(2) 在场景1下创建一个句为txtbtn的按钮元件。
(3) 进入按钮txtbtn的编辑状态,将“点击”帧转换成空白要害帧,使用矩形工具绘制一个边色为无、填充黑色,大小为100*10的矩形,中心对齐舞台中心。
(4) 保持其其余各帧空白,退出txtbtn的编辑状态,Ok!
接一下来创建文字对象。
(1) 在场景下创建一个名为txtline的影片剪辑
(2) 进入影片剪辑txtline的编辑状态,将层1更名为text.
(3) 选择层text的第一帧,使用文字工具在舞台中心创建一个文字对象,保持内容为空。在属性面板中设置该文字对象的属性如图所示,中心对齐舞台中心。
(4) 在text层上新建一个名为button的层,选择该层的帧1,从库中拖曳1个按钮txtbtn的实例到舞台,中心对齐舞台中心,属性面板中实例名为btnSquare
(5) 在button层上新建一个名为definition的层。选择该层的帧1,打开动作面板,写代码 #initclip SpaceWord.prototype.setWord = function(s) {//前面的initialization中的txtword:word; this.txtWord = s;
};
SpaceWord.prototype.setPosition = function(x, y, z) { //前面的initialization {txtword:word,x:x,y:y,z:z}; this.z = z; Object.registerClass("spaceWord", SpaceWord);
//构造器
function SpaceWord() {
//设置按钮的功能
this.btnSquare.onPress = function() {
//将照想机朝向单词
Object.environment.cam.dx = this._parent.x;//假如被点击就把该文字设为cam的目标
Object.environment.cam.dy = this._parent.y;
Object.environment.cam.dz = this._parent.z+Object.environment.fl*.9;
this.enabled = false;//被单击后就禁用按钮
this._visible = false;//隐藏按钮
};
this.onEnterFrame = this.render;
SpaceWord.prototype = new MovieClip();
SpaceWord.prototype.render = function() {
var zActual = Object.environment.fl+this.z-Object.environment.cam.z;//当this.z=cam.z时并不是说文字布满整个相机。这时文字显示出来的还是14号字体大小。它比例还是100%,并没有放大。
//让单词在相机后移动
if (zActual>0) {
//对象仍然可见时,则计算其大小
var scale = Object.environment.fl/zActual;
this._x = (this.x-Object.environment.cam.x)*scale;
this._y = (this.y-Object.environment.cam.y)*scale;
this._xscale = scale*100;
this._yscale = scale*100;
this._alpha = 100 - 99 * zActual/Object.environment.fl*.5;
} else {
this.z += Object.environment.fl*2;
this.btnSquare.enabled = true;
this.btnSquare._visible = true;
}
};
this.x = x;
this.y = y;
};
(7) 在库面板中选择影片剪辑txtline,右键菜单选择“属性”命令,在“元件属性”设置,如图:
2编写脚本:
选择主场景的第一帧,写下代码:
Object.environment = this;
//创建一个照相机对象。并设置它的参数初值,包括:x,y,z,dx,dy,dz
this.cam = {x:0, y:0, z:500, dx:0, dy:0, dz:0};
//设置环境常量
this.fl = 1000;
//创建文字所要附在其上的空影片剪辑space
this.createEmptyMovieClip("space",1);
//让文字放在舞台中间。
space._x=300;
space._y=169;
this.somewords = "观安闲菩萨 行深般若波罗蜜多时 照见五蕴皆空 度一切苦厄 舍利子 色不异空 空不异色 色既是空 空既是色 受想行识 亦复如是 舍利子 是诸法空相 不生不灭 不垢不净 不增不减 是故空中无色 无受想 行识 无眼耳鼻舌身意 无色声香味触法 无眼界 乃至无意识界 无无明亦无无明尽 乃至无老死 亦无老死尽 无苦集灭道 无智亦无德 以无所得故 菩提萨埵 依般若波罗蜜多故 心无挂碍 无挂碍故 无有恐怖 远离颠倒梦想 究竟涅盘 三世诸佛 依波罗蜜多故 得阿耨多罗三藐三菩提 故知般若波罗蜜多 是大神咒 是大明咒 是无上咒 是无等等咒 除一切苦厄 真实不虚 故说般若波罗蜜多咒 即说咒曰 揭谛揭谛 波罗揭谛 波罗僧揭谛 菩提萨婆呵 ";
//用数组来存放这些文字
this.wordList = new Array();
this.wordList = this.somewords.split(" ");
//为数组的每个单词创建一个实例
for (n=0;n<this.wordList.length;n++) {
var word = Object.environment.wordList[n];
//随机设置其X、Y、Z、坐标,其中Z坐标代表其深度
var x = random(600)-300;
var y = random(337)-169;
var z = random(Object.environment.fl*2)-Object.environment.fl;
//创建一个SpaceWord对象的实例
nombre = "word"+String(depth++);
initialization = {txtword: word, x: x, y: y, z: z};
space.attachMovie("spaceWord", nombre, depth, initialization);//把spaceWord附加到space上,新名为nombre,初始为initialization
好了,ctrl+enter!!!!
3。
好了,我来解释一下:
首先,来看Object.environment.fl(也就是后面的this.fl)是什么?
Object.environment.fl是我们设定的,用在Z轴上的。它的意义就是,当照相机运动这样一段的距离之后,文字会从100%的比例变大到“穿过”相机的大小。就可以有“穿过”的感觉。 源文件:
点击浏览该文件
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |