当前位置:主页 > 平面设计

最新发布

Flash代码实例:神奇的互动橡皮刷
Flash代码实例:神奇的互动橡皮刷

以前用Flash做橡皮刷的时候通常都是通过绘制底图实现的,最近在发现其实还有一种更好的实现方法就是用bitmapdata的alpha通道。  只要在一张图片上用draw画一个透明度为零的图片,就可以实现在draw的区域图片透明了。  完成效果如下:  点击选择右边的橡皮刷或者画笔图标,再用鼠标在画面上拖动,看看会出现什么情况?  AS代码如下://导入所需要的类import flash.display.BitmapData;import flash.geom.Rectangle;import flash.geom.Point;//初始点(0,0)var base_point:Point = new Point(0, 0);//初始区域(0,0,25,25)var base_rectangle:Rectangle = new Rectangle(0, 0, 25, 25);//导入库中图片var bit1:BitmapData = BitmapData.loadBitmap("img1");//定义org_bit:BitmapData用于恢复图片var org_bit:BitmapData = new BitmapData(mc._width, bit1.height, true, 0);org_bit.draw(bit1);//draw_bit拷贝org_bit用于涂鸦操作var draw_bit:BitmapData = org_bit.clone();//导入到舞台中_root.createEmptyMovieClip("draw_mc", 1);draw_mc.attachBitmap(draw_bit, 1);//定义橡皮刷erase_bit和笔刷redraw_bit argb为0(透明)var erase_bit:BitmapData = new BitmapData(mc1._width, mc1._height, true, 0);var redraw_bit:BitmapData = erase_bit.clone();//橡皮刷erase_bit填充为白色,这里注意a必须不为0 rbg为FFFFFFerase_bit.fillRect(erase_bit.rectangle, 0xFFFFFFFF);//定义橡皮刷erase_bit和笔刷redraw_bit形状 注意mc1必须为黑色 你也可以尝试用别的颜色看看效果慢慢体会吧erase_bit.draw(mc1);redraw_bit.draw(mc1);//交换erase_bit r通道和a通道数值 所以a通道数值为00erase_bit.copyChannel(erase_bit, erase_bit.rectangle, new Point(0, 0), 1, 8);//保存当前使用的工具var tools:String;//点击笔刷工具mc_bursh.onRelease = function(){this.gotoAndStop(2);mc_earse.gotoAndStop(1);tools = "bursh";};//点击橡皮刷工具mc_earse.onRelease = function(){this.gotoAndStop(2);mc_bursh.gotoAndStop(1);tools = "easre";};//在draw_bit上涂鸦draw_mc.onPress = function(){trace(tools);if (tools == "bursh"){this.onMouseMove = bursh_pic;}if (tools == "easre"){this.onMouseMove = earse_pic;}};//停止涂鸦draw_mc.onRelease = function(){delete this.onMouseMove;};//橡皮刷工具function earse_pic(){var now_rect:Rectangle = new Rectangle(_xmouse, _ymouse, _xmouse+base_rectangle.width, _ymouse+base_rectangle.height);trace(now_rect);//在draw_bit上使用copyPixels alpha为false 透明区域透明 不透明区域保持原色draw_bit.copyPixels(draw_bit, now_rect, new Point(_xmouse, _ymouse), erase_bit, new Point(0, 0), false);updateAfterEvent();}//笔刷工具function bursh_pic(){var now_rect:Rectangle = new Rectangle(_xmouse, _ymouse, _xmouse+base_rectangle.width, _ymouse+base_rectangle.height);trace(now_rect);//在org_bit上使用copyPixels alpha为true 则笔刷工具只有不透明的地方起作用draw_bit.copyPixels(org_bit, now_rect, new Point(_xmouse, _ymouse), redraw_bit, new Point(0, 0), true);updateAfterEvent();}//移动背景图观察效果mc.onPress = function(){this.startDrag();};mc.onRelease = function(){this.stopDrag();};

4 次浏览
用Flash AS代码制作美丽光影变幻动画
用Flash AS代码制作美丽光影变幻动画

效果演示:   制作思路: 这个影片剪辑中包含了五帧,每一帧上有不同颜色的小球,我们通过Actionscript代码来控制跳定位在不同颜色的小球上,从而实现不同颜色小球之间相互叠加,并在场景中复制,同时通过Actionscript控制小球的自动移动,并应用融合效果。  制作方法:  1.新建一个Flash文档,文件的场景大小设置为590*350.背景为黑色.帧频设置为31,将其另存为blendmode3.fla.  2.打开新建的blendmode3.fla.在主场景中绘制一个38*38大小的园形二维形体,按下shift+F9打开混色器,选择放射状添充,当选择蓝色,如下图所示.  注意右边的混色器,在下面的滑块中,我们左边用的是蓝色,右边是也蓝色,但它的透明度是0,添充后效果如下图所示。   注意这个园形的大小当前为我们放大后观看的效果,它的原本大小为38*38。

13 次浏览
Flash制作简单光晕变幻动画特效
Flash制作简单光晕变幻动画特效

本例中我们用Flash来模拟光斑的动画效果,效果如下。从中我们可以学习色彩的调节变换,调节出好的色彩才会使图像更加亮丽,增加层次感和视觉效果。  效果演示:  1. 单击Flash文件菜单点新建命令新建一个动画文件,再单击修改菜单中的场景,在弹出影片属性框中作一下修改,宽(width)为300px,高(height)为160px,背景色为黑色,按确定按钮。  图1  2.单击“插入”菜单中“添加组件”命令,新建一个组件取名为gux(随便取名),性质设为图像,按确定进入gux的编辑区。  图2  3. 从左边的工具栏中选择矩形工具,在下面的线条颜色按钮上单击,在弹出的选色面板左上角有个描边按钮,把它关闭,如左图,目的是在画出的矩形中去掉外边框。 在工具栏的下面填充颜色按钮上单击, 在弹出的选色面板上单击顶部中间的配色按钮。  图3  4. 在弹出的颜色面板上选择渐层,设置类型为线渐层,在配色坐标上排列5个色标,从左到右5个色标的值分别为(0,0,0)、(250,100,0)、(250,250,200)、(250,100,0)、(0,0,0),两个黑色Alpha的值为100%,如下图。

16 次浏览
用Flash AS行代码画一棵漂亮的树
用Flash AS行代码画一棵漂亮的树

本文中我们用用Flash AS代码来画一棵漂亮的树,只有25行代码。   AS代码如下:varmc=this;functiondl(ax,ay,bx,by){mc.moveTo(ax,ay);mc.lineStyle(0,0x000000,100);mc.lineTo(bx,by);}functionlzh(x,y,l,angle,n){if(n>0){vara_l,a_r,x1,x1_l,x1_r,y1,y1_l,y1_r,x2,x2_l,y2,y2_l,x2_r,y2_r;x1=x+0.5*l*Math.cos(angle*Math.PI/180);y1=y-0.5*l*Math.sin(angle*Math.PI/180);x2=x+l*Math.cos(angle*Math.PI/180);y2=y-l*Math.sin(angle*Math.PI/180);dl(x,y,x2,y2);a_l=angle+30;a_r=angle-30;l=l*2/3;lzh(x2,y2,l,angle-random(10),n-1);lzh(x1,y1,l*2/3,a_l,n-1);lzh(x1,y1,l*2/3,a_r,n-1);lzh(x2,y2,l*2/3,a_l,n-1);lzh(x2,y2,l*2/3,a_r,n-1);}}lzh(300,400,120,90,6);

4 次浏览
如何用AS代码隐藏Flash的右键菜单
如何用AS代码隐藏Flash的右键菜单

第一种写法:varmy_cm:ContextMenu=newContextMenu();//新建一个菜单对象my_cm.hideBuiltInItems();//新建一个菜单对象的内容隐藏my_cm.builtInItems.print=true;//如果你想要某个或某几个出现,可以这样设置,这里设置的仅显示"打印"this.menu=my_cm;//将菜单附加到对象  第二种写法:varmy_cm:ContextMenu=newContextMenu();//新建一个菜单对象my_cm.builtInItems.print=false;//要删除的菜单项设置为falsemy_cm.builtInItems.quality=false;my_cm.builtInItems.zoom=false;my_cm.builtInItems.forward_back=false;this.menu=my_cm;//将菜单附加到对象  下面是可控制的菜单项目:  zoom:缩放  quality:显示质量  play:播放  loop:循环  rewind:后

3 次浏览
Flash AS制作上升的水泡效果动画
Flash AS制作上升的水泡效果动画

本文介绍用Flash的AS代码制作上升的泡泡的动画。  如果一个一个的画,工作量繁重并且效果并不好。我们利用AS的复制语句来实现水泡的数量,利用设置属性来改变透明度,大小等。最后在影片剪辑中设置水泡的左右摆动。综合在一起就可以实现水泡上升的效果了。  具体步骤:  1.Flash MX中新建一文档。并适当修改文档属性(400×300,蓝色背景) 。  2.建一个影片剪辑,命名为“h2o”。进入编辑区以后,利用绘图工具,渐变填充绘制一个水泡。  3.回到主场景,把图层1命名为“h2o”。从库中把“h2o”影片剪辑拖放到场景的下方,在下面的属性面板中命名它的分身名为“h2o”。  4.主场景中新建一个图层,命名为“as”。在第1帧添加AS:i=1while(i<=30){duplicateMovieClip("h2o","h2o"+i,i);setProperty("h2o"+i,_x,random(400));setProperty("h2o"+i,_y,random(100)+300);setProperty("h2o"+i,_xscale,random(60)+40);setProperty("h2o"+i,_yscale,getProperty(eval("h2o"+i),_xscale));setProperty("h2o"+i,_alpha,random(30)+70);i++}_root.h2o._visible=0  5.具体解释如下:

6 次浏览
Flash AS代码常用调试语句trace()的使用
Flash AS代码常用调试语句trace()的使用

Flash中的trace();函数是测试flash影片的输出信息,例如查看影片中的某个变量的数值,方便AS代码的调试,让我们知道变量的值是不是自己要的结果。  trace();语法为: trace(变量或其它信息);   例如,我们设定一个变量bb=10,然后在帧的动作栏里输入:  bb=10;  trace(bb);  按Ctrl+回车测试影片时,就会弹出输出栏,显示10.  其它信息指的是数字或文字,字符.如:  trace(10);  trace("天极设计在线");  分别输出的信息是:10和天极设计在线.注意,文字或字符要用""围起来.

5 次浏览
Flash教程:AS下雨动画效果的制作
Flash教程:AS下雨动画效果的制作

先看下效果:(附.swf文件)  制作过程  一、新建一图层,大小随意;  二、新建元件(影片剪辑):  1、制作雨滴并下落。使用直线工具(颜色设为灰色,1像素)画一短直线,使用选择工具将直线移到上方(最好移到文档上面一点),在第15帧(要雨急则帧短,反之则长)处插入关键帧,并将直线向下移动,选择1至15帧之间任意一帧,选择属性下补间,选择形状。然后在第16帧处插入空白关键帧,在第36帧处插入空白关键帧,并在该帧上写入代码stop();(这是为了让雨不过于密急)。  2、制作水波。锁定图层1新建一图层2,在图层2第15帧处插入空白关键帧,使用椭圆工具(笔触设为灰色,填充色设为无)在直线下方画一椭圆,选择第15帧并将其移动到16帧,在第35帧插入关键帧,使用变形工具将椭圆放大,使用选择工具点击椭圆,将其透明度设为5,再在15-35帧之间创建形状补间动画。  三、点击场景回到场景,按CTRL+L打开库面板,将元件拖到场景的图层1,并调整到合适位置,在第170帧处插入关键帧。使用选择工具点击元件实例,在属性面板中写上实例名称,随意写,我这里写的是mc(如果你不是写的mc,请在代码中将mc改为你写的名称)。  四、新建一图层,在第1帧处插入代码c=1;在第2帧处插入空白关键帧,并将以下代码复制到动作面板中。  function ee(){  duplicateMovieClip("mc",c,c);  setProperty(c, _x,random(550));  setProperty(c, _y,random(200));  updateAfterEvent();  c++;  if (c>300) {  clearInterval(kk); }  }  kk=setInterval(ee,120);

6 次浏览
设计实现flash小球沿菱形运动
设计实现flash小球沿菱形运动

如何使小球沿菱形运动(不用引导线),其实方法有多种,下面帖一种比较简单的方法,老鸟们别看了(浪费你的时间).  以下代码中 ball是那个红色小圆点, rhombus 是那个菱形  //初始值    var x0:Number = rhombus._x, y0:Number = rhombus._y, w:Number = rhombus._width, h:Number = rhombus._height;    //四个顶点的坐标(从上往右往下往左)    var xy_array:Array = [[x0, y0-h/2], [x0+w/2, y0], [x0, y0+h/2], [x0-w/2, y0]];    //开始点坐标,定点在最高处,其中startX startY 两个变量决定到达转折点折反时的起始坐标值    var startX:Number = ball._x=xy_array[0][0];    var startY:Number = ball._y=xy_array[0][1];    //k 决定取数组中哪个元素的值    var k:Number = 1;    ball.onEnterFrame = function() {      //匀速运动,也就是将终点坐标与起点坐标的长度分成50个等份,ball坐标每次移动1个等份,直到终点      this._x += (xy_array[k][0]-startX)/50;    this._y += (xy_array[k][1]-startY)/50;    //当到达最右边点时      if (this._x>=(xy_array[1][0]-1)) {        //定义ball坐标和起点坐标的值,防止ball出现偏移,下面各个if 中意思相似          this._x = startX=xy_array[1][0];        this._y = startY=xy_array[1][1];        k = 2;        // k值变化决定终点坐标值,下同    }    if (this._y>=(xy_array[2][1]-1)) {          this._x = startX=xy_array[2][0];        this._y = startY=xy_array[2][1];        k = 3;      }     if (this._x<=(xy_array[3][0]+1)) {          this._x = startX=xy_array[3][0];        this._y = startY=xy_array[3][1];        k = 0;      }      if (this._y<=(xy_array[0][1]+1)) {          this._x = startX=xy_array[0][0];        this._y = startY=xy_array[0][1];        k = 1;    }};

5 次浏览
Flex程序开发心得小结
Flex程序开发心得小结

和Flash的开发环境相比,Flex提供的组件库确实很诱人,但由于功能太全面,导致程序的体积大,有时候使用不当,可能会影响程序运行效率。  在Flex的帮助手册中,有一个专门的章节讲了程序的优化,下面是我结合帮助作的几点小结:  1、避免容器的多级嵌套,减少相对尺寸、相对定位的使用。在使用百分比来给容器内的元件定尺寸,一旦容器中的任何一个元件的位置和尺寸变化,都会引发容器对所有子级的重定位动作。如果嵌套的级别很深,这个计算量会很大。  2、尽量使用轻量级的容器Canvas是体积最小的容器,它只支持绝对定位。很多时候,都可以使用它来代替HBOx和VBox。另外,Canvas也是我们编写自定义容器性质组件的一个首选。它具有容器的基本功能,利于扩展。  3、避免使用大体积的组件,比如DataGrid、AdvancedDataGrid大个子组件的功能强大,但开销也是非常大的。由于功能的复杂性,使得皮肤、样式、itemRenderer的实现都格外复杂。  4、处理数据时多用分页的方式在使用数据类型控件时,尽量减少数据一次的显示量。比如TileList,它会把数据一次性全部创建,不管是不是需要显示,这样很浪费资源。 ViewStack 、TabNavigator等在处理元件时,并不是一次创建,只要元件在第一次被显示时才创建,这样,就避免的不必要的开销。  5、setStyle和styleNameFlex 组件的皮肤都是可视化元件,组件在自身初始化时,会使用当前的样式比如styleName完成所有皮肤元件的绘制。如果我们在运行期间通过setStyle修改了组件的样式,组件的尺寸、位置就会作相应调整。联系到第一条,如果组件位于一个层级很深的容器中,也会有一个大的计算量。

3 次浏览
共计26043条记录 上一页 1.. 796 797 798 799 800 801 802 ..2605 下一页