FLASH特效与实例-立体层旋转效果
- 格式:doc
- 大小:71.00 KB
- 文档页数:6
制作方法:1、事先用PHOTOSHOP处理好6张200*199的图片。
2、打开FLASH,新建文挡,550*400,桢频60。
先导入事先准备好的六张图片,点“文件”-"导入"-“导入到库”。
3、图片导入后,打开库面板。
4、然后在导入的图片上击鼠标右键。
选择“链接”。
5、在弹出的对话框中,输入"image0"。
并且勾选如下图所示的两个复选框。
照此方法,对图片依次进行设置。
即"image0"、"image1"、"image2"、"image3"、"image4"、"image5"。
6、在场景第一层中绘制一个背景。
这步不是必须的,呵呵...可以省略。
当然啦,你也可以加一张背景图片。
7、新建第二层(AS层),添加代码。
在第一桢输入如下代码:function createRectangle(scope, w, h, color, is_fill){var l = scope.getNextHighestDepth();var _mc = scope.createEmptyMovieClip("mc_" + l, l);with (_mc){lineStyle(0, color, 100);if (is_fill){beginFill(color, 100);} // end iflineTo(0, h);lineTo(w, h);lineTo(w, 0);lineTo(0, 0);endFill();} // End of withreturn (_mc);} // End of the functionstop ();var loader_width = 150;var loader_height = 4;var loading_color = 4539717;var my_loader_mc1 = createRectangle(this, loader_width, loader_height, loading_color, true);var my_loader_mc2 = createRectangle(this, loader_width, loader_height, loading_color, false);my_loader_mc1._x = (Stage.width - loader_width) / 2;my_loader_mc1._y = (Stage.height - loader_height) / 2;my_loader_mc2._x = my_loader_mc1._x;my_loader_mc2._y = my_loader_mc1._y;this.onEnterFrame = function (){my_loader_mc1._width = _root.getBytesLoaded() /_root.getBytesTotal() * loader_width;if (_root.getBytesLoaded() == _root.getBytesTotal()){my_loader_mc1.removeMovieClip();my_loader_mc2.removeMovieClip();delete my_loader_mc1;delete my_loader_mc2;delete this.onEnterFrame;play ();} // end if};在第二桢输入如下代码:function my_getImages(){for (var _loc1 = 0; _loc1 < 6; ++_loc1){my_blank_mc.createEmptyMovieClip("image" + _loc1, _loc1);my_blank_mc["image" + _loc1].createEmptyMovieClip("my_blmc", _loc1);my_blank_mc["image" +_loc1].my_blmc.attachBitmap(flash.display.BitmapData.loadBitmap("imag e" + _loc1), 1, false, true);} // end of for} // End of the functionfunction pointsTransform(points, _zxb) {var _loc17 = new Array();var _loc10 = Math.sin(_zxb.x);var _loc12 = Math.cos(_zxb.x);var _loc8 = Math.sin(_zxb.y);var _loc11 = Math.cos(_zxb.y);var _loc7 = Math.sin(_zxb.z);var _loc9 = Math.cos(_zxb.z);var _loc16;var _loc15;var _loc3;var _loc5;var _loc4;var _loc6;var _loc18;var _loc14;var _loc13;var _loc1 = points.length;while (_loc1--){_loc16 = points[_loc1].x;_loc15 = points[_loc1].y;_loc3 = points[_loc1].z;_loc5 = _loc12 * _loc15 - _loc10 * _loc3; _loc4 = _loc10 * _loc15 + _loc12 * _loc3; _loc18 = _loc11 * _loc4 - _loc8 * _loc16; _loc6 = _loc8 * _loc4 + _loc11 * _loc16; _loc14 = _loc9 * _loc6 - _loc7 * _loc5; _loc13 = _loc7 * _loc6 + _loc9 * _loc5; _loc17[_loc1] = {x: _loc14, y: _loc13}; } // end whilereturn (_loc17);} // End of the functionfunction my_GetTransform(mc, a, b, c){mc._visible = my_TransifVisi(a, b, c);if (!mc._visible){return;} // end ifvar _loc1 = mc.transform.matrix;_loc1.tx = b.x;_loc1.ty = b.y;_loc1.a = (a.x - b.x) / mc.my_blmc._width;_loc1.b = (a.y - b.y) / mc.my_blmc._width;_loc1.c = (c.x - b.x) / mc.my_blmc._height; _loc1.d = (c.y - b.y) / mc.my_blmc._height;mc.transform.matrix = _loc1;} // End of the functionfunction my_TransifVisi(a, b, c){var _loc5 = b.x - a.x;if (!_loc5){return (a.y > b.y == c.x > a.x);} // end ifvar _loc4 = c.x - a.x;if (!_loc4){return (a.y > c.y == b.x < a.x);} // end ifreturn ((b.y - a.y) / _loc5 < (c.y - a.y) / _loc4 != (a.x < b.x == a.x > c.x));} // End of the functionStage.scaleMode = "noScale";var my_mc = new ContextMenu();my_mc.hideBuiltInItems();_root.menu = my_mc;_root.createEmptyMovieClip("my_blank_mc", 1);var _zxb = {x: 0, y: 0, z: 0};var my_Box_daxiaos = [{x: -50, y: -50, z: -50}, {x: 50, y: 50, z: -50}, {x: -50, y: 50, z: -50}, {x: -50, y: -50, z: 50}, {x: 50, y: -50, z: 50}, {x: 50, y: 50, z: 50}];my_blank_mc._x = 400;my_blank_mc._y = 280;my_blank_mc.onEnterFrame = function (){_zxb.x = _zxb.x - this._ymouse / 12000;_zxb.y = _zxb.y + this._xmouse / 12000;var _loc2 = pointsTransform(my_Box_daxiaos, _zxb);my_GetTransform(this.image0, _loc2[2], _loc2[0], _loc2[3]);my_GetTransform(this.image1, _loc2[5], _loc2[1], _loc2[2]);my_GetTransform(this.image2, _loc2[0], _loc2[2], _loc2[1]);my_GetTransform(this.image3, _loc2[4], _loc2[3], _loc2[0]);my_GetTransform(this.image4, _loc2[3], _loc2[4], _loc2[5]);my_GetTransform(this.image5, _loc2[1], _loc2[5], _loc2[4]);};my_getImages();stop ();8、测试,存盘。
Flash三维效果应用实例发表时间:2011-09-19T11:14:26.050Z 来源:《职业技术教育》2011年第8期供稿作者:李岩[导读] 随着地球的旋转,纯净湛蓝的地球最终变成污浊蒙灰的地球,立体感很强,呼吁人类要善待地球。
李岩(大连市信息管理职业中专辽宁大连116021)摘要:Flash虽然是二维动画制作软件,但也可以采用一些三维技术原理在flash中实现简单的伪三维效果,即通过对物体放大缩小,改变透明度、深度,运动变换等操作来达到视觉欺骗的效果。
原理虽然简单,如果应用合理也能产生很眩的效果。
通常,我们可以利用三种方法实现:光影效果、遮罩、使用ActionScript。
其中,光影效果实现起来比较简单,不再赘述,下面分别对如何利用遮罩和ActionScript实现三维效果做简单介绍。
关键词:flash 三维效果遮罩ActionScript实例一:利用遮罩制作三维旋转效果——善待地球操作步骤:(1)新建图形元件“地球”。
单击“椭圆工具"按钮,按住shift键,画出一个正圆。
(2)在“混色器”中选择放射状渐变色,设置两个渐变点,左边渐变点是“alpha”值为16%的蓝色(003366),右边渐变点是“alpha”值为100%的蓝色(003366),如图1。
(3)使用“颜料桶工具”为圆填充这种渐变色,并删去圆的边框,如图2。
图1 图2(4)新建图形元件“文字”。
单击“文本工具”按钮,选择白色,在舞台中写出“善待地球”文字,字体为黑体,字号为“50”。
(5)新建图形元件“遮罩”。
使用“椭圆工具”画个正圆,颜色值为“#666666”。
(6)导入库中的两张地图图片,“地图1”和“地图2”(7)新建图形元件“旋转的地球”。
将图层1改名为“遮罩”,在此图层的第1帧导入名为“遮罩”的元件。
(8)在“遮罩”层第35帧插入关键帧。
(9)新建图层,命名为“地图2”,位于“遮罩”图层的下方,在此图层的第1帧导入图片“地图2”。
这是一个来自Flashzone的例子,幸运鸟只作了简单的加工。
在这个示例中,同样用到了一些非常简单的Actions,而效果却很不错,所以通过它来进一步认识Actions的用法是再好不过了。
新建一个文件,设置背景色为黑色。
按Ctrl-F8新建一个图形类图符bar。
选矩形工具用蓝色的填充色按Shift键拉出一个不带边框的正方形。
选中这个正方形,按Ctrl-C复制,再按Ctrl-V粘贴,把新生成的正方形拖到原来正方形的下面,再按Ctrl-V产生一个正方形,再拖到前面两个正方形下面,如此往复,使画面中一共有八个排成“1”字形的正方形。
同时选中这八个正方形,按Ctrl-K设置对齐方式,使它们在竖直方向上等间距,水平方向上居中对齐(或左或右对齐,因为它们同样大小),见下图。
注意调整到如下图所示的间距,因为这八个方块的间距取决于两端的两个方块的位置,所以如果间距不合适,只需要改动首尾两个方块的位置即可。
另外一点需要注意的是,因为这些方块是形体,所以不要把它们重叠在一起,那样它们会融合成为新的形体。
所有工作做好后,把这八个方形移动到下图所示位置上,使十字定位符位于它们的最下端,因为我们一会儿要相对这一点进行压缩处理。
下面我们来做一个可以转动的方块层。
按Ctrl-F8新建一个电影片断类图符moving bar。
按Ctrl-L打开图库窗口,并把刚刚做好的图符bar拖到编辑区中。
在第20帧按F6插入关键帧,并对这个图符实例进行压缩处理,如下图所示,把它压缩直到非常扁为止,为了达到更好的效果,我们需要用放大镜工具对画面进行放大,然后再进一步压扁这个实例,但要注意不要使它发生翻转,也就是说,保证上下两条端线的相对位置关系不变。
在选中它的状态下按Ctrl-C复制备用。
-->-->双击这个实例,把它的颜色效果设置为下图所示。
然后双击第1帧,设置帧属性为运动渐变。
还在这个图符的编辑状态下,新建一个层。
在第1帧按Ctrl-V粘贴刚才复制的压扁的方块。
flash简单制作旋转的立方体flash教程flash实例立方体
1、准备6张200*200 JPEG格式图片,作为立方体的六个侧面图片;一张750*560 JPEG格式图片,作为动画的底图,一首MP3音乐作为背景音乐。
2、打开FLASH 8.0或者FLASH CS3软件,设置动画尺寸为750*560,把准备好的6张200*200图片和1张750*560图片以及MP3音乐导入到库里。
注意:FLASH 8.0的软件新建文档画面如下:(点击-创建新项目-FLASH文档)
FLASH CS3新建文档画面如下:(记住:一定要点击新建-FLASH文件(ActionSc ript 2.0),因为3.0不支持)
3、把库里的6张200*200图片重新命名,依次命名为:image0 image1 image2 i mage3 image4 image5 ,如下所示:
4、鼠标右键放在库里重新命名为image0的图片上,点击鼠标右键的“属性”,在出现的待选项目里,把鼠标放在衔接项目上,点击鼠标左键,出现如下提示:
在“为ActionScript”前面的框里点击,出现绿色的勾,如图所示。
5、新建一个名字为“语句”的影片剪辑,在第一帧添加动作代码如下(复制-粘帖就可以啦):
function createImages()
{。
1.新建一个FLASH文档,点插入菜单/点新建命令,新建一个名为矩形的图形元件,点确定。
在矩形的场景中,用矩形工具,笔触颜色设置为无,填充色设置为红色(也可为其它),在场景中画一个尺寸为100*100(也可以大的,也可能小点)的矩形,然后调出对齐面板,设置水平垂直居中对齐。
2.然后点任意变形工具,将鼠标放在正方形的上边缘,等鼠标右下角出现园弧标志时按住鼠标左键向下拖一个园弧如图:3.按上面的方法将其余三边也拖成园弧,弧度要尽最大可能的拖一样大,然后点修改/变形/缩放与旋转/旋转45度,然后将星星设置水平垂直居中对齐。
这样星星元件制作出来了。
如图:4.点插入/点新建命令,新建一个命名为正方形的图形元件。
用工具栏中的矩形工具,笔触颜色为无色,填充色为红色,在场景中画一个矩形,在属性栏里设置它的大小为150*150。
5.再点插入/新建命令,新建一个名为星星的影片剪辑元件,在星星的影片剪辑场景中,在图层的第一帧拖入刚做好的星星元件,再做水平垂直居中对齐。
在30桢处插入一关键桢。
在60帧处插入空白关键帧,将第一桢至30帧做补间动作,在属性栏中旋转里选择顺时针,在次数里选择1次。
在60处拖入刚才建好的正方形图形元件,并按ctrl+b(或点修改/分离)将图形打散,并延长至200帧,在31帧处插入关键帧,也按ctrl+b将将图形打散,然后设置31帧至60帧形状补间。
4.接下来做星星旋转遮罩了,点插入/新建命令,新建一个名为星星遮罩的影片剪辑元件,点确定。
在星星遮罩的影片剪辑场景中,点图层1的第一帧,用矩形工具画一个与场景同样大小的矩形(550*400),颜色为兰色,设置水平垂直居中对齐。
然后加入一层,点第二层的第一帧,拖入刚做的星星图形元件到场景的左上角,然后再加一层,将星星拖放到它的右边,继续加层,依次拖放,只到将场景布满为止。
最后删除图层1。
3.回到主场景中 ,将图层1的第一帧导入一张背景图片,设置水平垂直居中对齐,并延长至200帧。
实现漂亮的立体球旋转效果1,建立FLASH文档,起名为“立体球”,保存。
设置背景为深蓝色,其他属性默认。
2、新建影片剪辑元件“球”,用椭圆工具画一椭圆,笔触无,放射状填充,色彩自定,大小设20,全居中。
最后打开库中影片剪辑元件“球”右键链接如图:3、回到场景图层1第1帧右键动作进入动作面板,输入如下语句:_root.createEmptyMovieClip("MC", 1);MC._x = 275;MC._y = 200;MC._xscale = MC._yscale = 50;n = 0;R = 200;f = 300;var myarray = new Array();var j = 10;while (j <= 180){var i = 10;while (i <= 360){++n;r = Math.sin(j * 3.141593E+000 / 180) * R;MC.attachMovie("b", "b" + n, n);MC["b" + n].x = r * Math.cos(i * 3.141593E+000 / 180);MC["b" + n].z = r * Math.sin(i * 3.141593E+000 / 180);MC["b" + n].y = R * Math.cos(j * 3.141593E+000 / 180);MC["b" + n].kk = function (a){x0 = this.x;y0 = this.y;z0 = this.z;x1 = x0;y1 = Math.cos(a) * y0 - Math.sin(a) * z0;z1 = Math.sin(a) * y0 + Math.cos(a) * z0;f1 = f / (f + z1);this._x = x1 * f1;this._y = y1 * f1;this._alpha = 100 * f / (f + z0);};myarray.push(MC["b" + n]);i = i + 10;} // end whilej = j + 10;} // end whilep = 0;onEnterFrame = function (){p = p + 1.000000E-002;for (var _loc1 = 0; _loc1 < myarray.length; ++_loc1) {myarray[_loc1].kk(p);} // end of for};。
flash cs5 旋转3D 图形使用【3D 旋转工具】可以在3D 空间中旋转影片剪辑实例,这样通过改变实例的形状,使之看起来与观察者之间形成某一个角度。
单击【工具】面板中的【3D 旋转工具】按钮,然后选择舞台中的影片剪辑实例。
此时,3D 旋转控件将会出现在该实例之上。
其中,X 轴为红色、Y 轴为绿色、Z 轴为蓝色,使用橙色的自由旋转控件可同时绕X 和Y 轴旋转。
【3D 旋转工具】的默认模式为全局。
在全局3D 空间中旋转对象与相对舞台移动实例等效;在局部3D 空间中旋转实例与相对父影片剪辑(如果有)移动实例等效。
如果要切换【3D 旋转工具】的全局模式和局部模式,可以在选择【3D 旋转工具】的同时单击【工具】面板【选项】部分中的【全局】切换按钮。
如果要通过【3D 旋转工具】进行拖动来放置影片剪辑实例,首先将鼠标移动到该实例的X 、Y 、Z 轴或自由旋转控件上,此时在鼠标指针的尾处将会显示该坐标轴的名称。
单击选择X 轴Y 轴Z 轴全局模式局部模式在使用【3D 旋转工具】进行拖动的同时按键可以临时从【全局】模式切换到【局部】模式。
拖动一个轴控件可以使所选的影片剪辑实例绕该轴旋转,例如左右拖动X 轴控件可以绕X 轴旋转;上下拖动Y 轴控件可以绕Y 轴旋转。
拖动Z 轴控件可以使影片剪辑实例绕Z 轴旋转进行圆周运动;而拖动自由旋转控件(外侧橙色圈),可以使影片剪辑实例同时绕X 和Y 轴旋转。
向左拖动X 轴拖动自由旋转控件移动光标至X 轴移动光标至Y 轴移动光标至Z 轴向上拖动Y 轴逆时针拖动Z 轴在舞台上选择一个影片剪辑,3D旋转控件将显示为叠加在所选实例上。
如果这些控件出现在其它位置,可以双击该控件的中心点以将其移动到选定实例的正中心。
双击如果想要相对于影片剪辑实例重新定位旋转控件的中心点,可以单击并拖动中心点至任意位置。
这样,在拖动X、Y、Z轴或自由拖动控件时,将使实例绕新的中心点旋转。
例如将旋转控件的中心点拖动至影片剪辑实例的左下角,然后顺时针拖动Z轴控件,即可以新的中心点旋转。
利用Flash的AS3.0代码制作3D旋转动画效果效果演示:〖本教程着重于代码的编写,版本AS 3.0。
图形元件的制作不作讲解,请参看有关教程。
〗1、新建Flash文档,创建5 个图形,(或导入5张图片到库中)。
2、创建一个影片剪辑,1层为图片层2层为代码层。
在1层把5张图片分别放在5帧中,在代码层输入stop(); 如图:3、Ctrl + L 打开库,右键单击影片剪辑实例做链接,类名为:IconMenu 如图:4、返回场景1,图层1为背景层,图层2为代码层。
在图层1导入背景图片。
图层2输入代码:1. include "Math2.as"2. //图片容器3. var menu:Sprite=new Sprite();4. //使图标移动5. menu.x = 300;6. menu.y = 200;7. //注册事件侦听器8. menu.addEventListener(Event.ENTER_FRAME,moveMenu);9. this.addChild(menu);10. //椭圆在x 和y 轴上的截距11. var disx:Number = 200;12. var disy:Number = 10;13. //旋转速度14. var speed:Number = 0;15. initMenu(5);16. function initMenu(n:int) {17. for (var i:int; i<n; i++) {18. var mc:MovieClip = new IconMenu();19. //缩小图标20. mc.scaleX = mc.scaleY = .5;21. menu.addChild(mc);22. }23. }24. //事件侦听器函数25. function moveMenu(e:Event):void {26. //获取图标数27. var iconCount:int = menu.numChildren;28. //定义数组29. var depthArray:Array = new Array();30. //把360度平分31. var angle:Number = 360 / iconCount;32. for (var z:int; z<iconCount; z++) {33. //根据深度获取图标34. var mc:MovieClip = menu.getChildAt(z);35. //跳转到不同帧,来显示不同的图标36. mc.gotoAndStop(z+1);37. //设置图标的位置38. mc.x = cosD(speed + angle*z) * disx;39. mc.y = sinD(speed + angle*z) * disy;40. setProp(mc,"alpha");41. setProp(mc,"scaleX",.2,.7);42. setProp(mc,"scaleY",.2,.7);43. //保存图标到数组44. depthArray[z] = mc;45. }46. //重新设置图标的深度47. arrange(depthArray);48. speed += 2;49. }50. function arrange(depthArray:Array):void {51. //按照y坐标排序52. depthArray.sortOn("y", Array.NUMERIC);53. var i:int = depthArray.length;54. while (i--) {55. menu.setChildIndex(depthArray[i], i);56. }57. }58. function setProp(mc:MovieClip,prop:String,n1:Number = .5, n2:Number = 1):void {59. mc[prop] = ((mc.y + 2 * disy) / disy - 1) / 2 * (n2 - n1) + n1;60. }5、新建.as文档,保存名为:Math2.as (这个文档是进行三角函数的计算)输入代码:1. //角度转弧度2. function angleT oRadian(angle:Number):Number3. {4. return angle*(Math.PI/180);5. }6. //弧度转角度7. function radianT oAngle(radian:Number):Number8. {9. return radian*(180/Math.PI);10. }11. //计算正弦值12. function sinD(angle:Number):Number13. {14. return Math.sin(angleT oRadian(angle));15. }16. //计算余弦值17. function cosD(angle:Number):Number18. {19. return Math.cos(angleT oRadian(angle));20. }21. //计算反正切22. function atan2D(y:Number, x:Number):Number23. {24. return radianT oAngle(Math.atan2(y, x));25. }复制代码把fla文档与Math2.as 文档保存在同一目录下,进行测试。
这是一个来自Flashzone的例子,幸运鸟只作了简单的加工。
在这个示例中,同样用到了一些非常简单的Actions,而效果却很不错,所以通过它来进一步认
识Actions的用法是再好不过了。
新建一个文件,设置背景色为黑色。
按Ctrl-F8新建一个图形类图符bar。
选矩形工具用蓝色的填充色按Shift键拉出一个不带边框的正方形。
选中这个正方形,按Ctrl-C复制,再按Ctrl-V粘贴,把新生成的正方形拖到原来正方形的下面,再按Ctrl-V产生一个正方形,再拖到前面两个正方形下面,如此往复,使画面中一共有八个排成“1”字形的
正方形。
同时选中这八个正方形,按Ctrl-K设置对齐方式,使它们在竖直方向上等间距,水平方向上居中对齐(或左或右对齐,因为它们同样大小),见下图。
注意调整到如下图所示的间距,因为这八个方块的间距取决于两端的两个方块的位置,所以如果间距不合适,只需要改动首尾两个方块的位置即可。
另外一点需要注意的是,因为这些方块是形体,所以不要把它们重叠在一起,那样它们会融合成为新的形体。
所有工作做好后,把这八个方形移动到下图所示位置上,使十字
定位符位于它们的最下端,因为我们一会儿要相对这一点进行压缩处理。
下面我们来做一个可以转动的方块层。
按Ctrl-F8新建一个电影片断类图符moving bar。
按Ctrl-L打开图库窗口,并把刚刚做好的图符bar拖到编辑区中。
在第20帧按F6插入关键帧,并对这个图符实例进行压缩处理,如下图所示,把它压缩直到非常扁为止,为了达到更好的效果,我们需要用放大镜工具对画面进行放大,然后再进一步压扁这个实例,但要注意不要使它发生翻转,也就是说,保证上下两条端线的相对位置关系不变。
在选中它的状态下按Ctrl-C复制备
用。
-->
-->
双击这个实例,把它的颜色效果设置为下图所示。
然后双击第1帧,设置帧属性为运动渐变。
还在这个图符的编辑状态下,新建一个层。
在第1帧按Ctrl-V粘贴刚才复制的压扁的方块。
并把它移动到下图所示的位置,也就是蓝色方块组的我好喜欢思缘
论坛端。
双击它设置其颜色属性如下图所示:
选中蓝色的条形方块组,按Ctrl-C复制备用。
在新建层的第20帧按F7插入空白关键帧,按下Ctrl+Shift-V把复制的对象粘贴到原处。
双击最后1帧,设置帧属性的Actions为Stop,因为我们需要这个电影片断每次都播放到这里结束,在特定条件触发后再播放。
现在双击第1帧,设置帧属性为运动渐变。
这个电影片断类图符做好后的时间轴如下图所示。
下面来做多个层的立体旋转。
新建一个电影片断类图符full cube。
把刚做好的电影片断类图符moving bar拖到编辑区中放在快乐右边的位置上,新建一个层layer 2,在第1帧把图符bar分7次拖进来。
把两层中的对象全部选中,按Ctrl-K对齐排列如下图所示,注意把间距调整好。
现在看上去是一个完整的方形矩阵,但实际上分别放在两层中,而且最右边的那一条是电影片断,其余都是静止的图形类图符。
我们可以从十字定位符的位置来区分是电影片断类还是图形
类图符。
在两层的第4帧各按F6插入关键帧,在layer 2中把右数第二个竖条删除,选择第1层的第4帧,从图库中再拖一个moving bar出来放在空缺的位置上,再拉一个大框选中所有的对象,按Ctrl-K对齐排列,排列好后的状态如下图左所示。
依此类推,再分别在两层的第7,10,13,16,19和22帧按F6插入关键帧,并依次在layer 2中从右向左删除一竖条,再在layer 1的相应帧上添加1竖条电影片断,然后再进行对齐操作,这样在第22帧,所有的图形类图符实例将会被电影片断类图符实例所取代,如上右图所示。
在layer 2的第22帧,我们还
要设置帧属性的Actions为Stop。
以上设置的目的,是为了让这些不同的方块层在不同的时间从右向左依次起动旋转,同时还要保证画面的连续性。
设置好后的时间轴如下图所示:
现在我们来做用于控制旋转的电影片断control movie。
新建一个层layer 2,这一层仅用于设置相应帧的Actions。
在第1层的第1帧把刚做好的full cube 图符拖进编辑区。
然后在两层的第1到第9帧每1帧都按F6插入关键帧,因为第1层的第1帧有内容,所以第1层中1到9帧都有同样的内容,而第2层的第1帧没有内容,所以第2层中所有关键帧都是空帧。
分别选中第1层的第1,2,4,6,8帧,按Ctrl-B打散对象。
第3,5,7,9帧将用于立体层向不同方向旋转的动画,每一帧代表一个方向,顺序可以是任意的。
在这个示例中,我用第3帧制作立体层从右向左旋转,第5帧做自上而下旋转,第7帧是自左向右旋转,第9帧是自下向上旋转。
因为从我们做好的前面这些电影片断中可以看出,立体层旋转的方向总是自上而下的,所以要实现从左到右的旋转,我们需要对第3帧的对象顺时针旋转90度,注意旋转90度后对象的位置不能发生变化,如果有变化一定要细心调整,把它放回原位。
同样,第5帧不变,第7帧逆时
针旋转90度,第9帧做竖直方向上的镜像。
现在我们为layer 2的相应帧设置Actions。
很简单,第1,2,4,6,8帧分别设置为Stop。
然后分别为第3,5,7,9帧设置label(帧标签)为left,down,right和up。
所有这些做完以后,这个用于控制旋转的电影片断也就做好了。
它的时间轴窗口如下图所示。
从上面的设置我们可以看出,一会儿我们只需要做好几个按钮,再设置它们的Actions,使点击不同的按钮跳转到这里的相应帧上执行相应的旋转操作就行了。
因为每一个旋转操作都有Stop Actions来实现停止,所以不会执行别的帧上其它的旋转操作。
好了,现在我们做一个按钮,随便什么样子都行,也不需要太复杂,只要把Up帧做好就行了。
我这里做了一个箭头。
回到主场景,把图符control movie拖进来放好,双击它设置它的实例名为box。
再把按钮拖一个进来,现在我们设置这个按钮的Actions以便控制相应的旋转,假设这个按钮用来控制方块自右向左的旋转。
双击该按钮,选Actions标签,点
,选On MouseEvent,再在右边选Release,表示当鼠标点击按钮并释放时执行相应操作。
接下来设置当鼠标事件发生后需要执行哪些操作。
点
,选Tell Target,在右边的Target栏中输入/box。
Tell Target是Actions中用到比较多也是最重要的命令之一,一般与按钮连用。
我在这里只简单介绍一下它的作用,它可以直接控制某个指定的电影片断的播放情况,譬如在这个示例中,有3个电影片断,每个电影片断有它自己的时间轴,如果我们想让其中一个电影片断在按钮被按下时播放,该怎么办呢,在没有Tell Target的情况下是无法实现这种控制的,Tell Target可以让我们选择现在操作的对象是哪个电影片断。
当然我们必须为电影片断的实例命名,这样才可以选择。
关于Tell Target的用法我们今后还会大量碰到。
下面我们继续添加Actions命令,刚才执行的Tell Target命令为我们指定的操作的对象是电影片断control movie的实例box,我们接着设置将对它执行何
种操作。
按
,选Go to。
在右边的对话框中选Label,并输入left。
在下面Control项中的复选框中打上勾,见下图。
这样我们就把其中一个按钮的Actions设置好了。
来看看整个设置的情况,见下图。
它的含义大体上来说就是在按钮被按下并释放时对名为box的电影片断实
例执行跳转到标签为left的帧上并播放的操作。
现在做好了一个按钮,我们可以把这个按钮复制三次,旋转到不同方向,并把Actions中的left分别改为down,right和up就行了。
现在整个示例就做好了,
怎么样,不难吧!这里是这个示例的源文件。