推荐阅读

详细解析通过设计让APP变快的6个方法
我们都知道不管网页还是移动应用,响应速度都是最重要的体验指标之一,并且移动应用的网络环境不稳定,速度的体验显得尤为重要。其实速度优化不仅是程序员的事,设计,也能够让APP变得更快。1.后台执行这是一条很通用,也容易理解的方法。用户不会愿意盯着进度条傻傻地等待,除了“取消”没有其他选择。在系统处理一些网络任务的时候,完全可以允许用户做一些其他的事情。各大平台的发微博,都采用了后台执行。云阅读的离线下载也采用后台执行。而微博的看长图(或视频),是个反例。网络不给力时,要么等待1分钟让图加载完,要不就只好放弃看图。为什么不能让图加载的同时,用户可以看其他微博呢?2.在载入前显示内容客户端与web的一个不同点,客户端的显示内容包括本地数据和网络数据两部分。在设计界面时,将更多的信息放在本地,在网络数据未载入时即显示本地数据,让用户产生一种“已经载入一半了”的错觉,即使最终的耗时一样,心理感受也会更快。当然把数据过多地写在本地,会牺牲一些灵活性,需要根据具体情况考虑。具体请看twitter、Facebook、Vine等优秀产品的启动画面,虽然同是静态图片,但它们不使用LOGO而假装已经载入了“导航栏”和“标题栏”,让人感觉“点击后立即就启动了”。

CS5快速给偏暗的人物磨皮
本教程运用历史记录画笔磨皮的方法跟用蒙版磨皮方法大致相同,先把图片稍微调亮后,对图片模糊处理,然后设置好快照位置,用历史记录画笔涂抹脸孔即可。 1、打开原图素材,按ctrl+J复制一层,选择复制层,设置图层样式为“滤色”,不透明度为“50%”。按“ctrl+E”合并两个图层。 参数设置如下图 2、执行 滤镜 < 模糊 < 高斯模糊,根据皮肤的好坏调节像素, 参数设置如下图

UGA5.5实例教程【文字淡出淡入】
2.点祯-“添加条幅文本”输入文字(佛前青莲).文字大小-25.颜色-白色.字体随意.在预览中把文字拖至画布左侧中间位置3.选-效果-进入场景选择-减弱-画面桢设为10;退出场景选-画面-画面桢设为10;开始预览-满意后点确定-创建单一对象如图:梅风剑提示:为使文字竖直,可以每输入一个字回车一下的位置4.点最后一祯(12祯),重复第2步/第3步操作.依此点祯-“添加条幅文本”依此输入文字(梅风剑)/(一花一世界)/(一佛一如来)/(梦寻佛踪影)/(莲香溢梦中)/(风弄花瓣雨)/(迷失莲花丛)/(佛伴我心眠)/(一睡五百年)梅风剑提示:记住不是一次性把文字复制粘贴,而是--依此分别重复第2第3步操作如图添加好

摄影时如何让森林美女更神秘一些
面对偌大的森林场景,影友们经常会觉得找不到神秘感觉的拍摄思路,其实只要紧记着几个拍摄要点就能拍出不少好片子,这次我们挑了三张照片与专业摄影师一起探讨在森林里面拍出神秘感觉人像的小技巧吧。 佳能EOS 5D,EF28-70mm,F2.8,ISO100,1/60秒 摄影教程 “树林中光线比较幽暗,因为树林的上空大部分都被树叶挡住了,所以我选择了一块透光性较好的地方拍摄;此外我还使用了外拍灯为人物打逆光和侧逆光;这种做法足够展现出森林里的大气感觉吗?” 有层次的光线过渡非常重要 这张片子的整体氛围让我眼前一亮,照片很好地展现了森林的那种神秘、低调的感觉。首先摄影师运用了柔和光比,配合上摄影师选择的场景,使得场景,在一棵有杈的树下同时有密有疏的绿叶中,女模特一身白色连衣婚纱显得特别出彩,主次分明。而且镜头畸变控制非常好,较少的焦外变形以及模特修长的身形显得这张图特别的高档。 在我看来唯一不足的在后期方面,阳光从树荫之中射入的光线可以更有层次些,从明到暗的画面过渡会更加出彩,大概作者在做后期的时候稍微有一点偷懒了,只是用画笔工具将左上角、右上角以及人物部分的局部光线简单地加亮了,没有留意到暗部以及亮部之间的衔接,使得两者过渡有点含糊了。总的来说,该作品还是很好看的,无论是构图还有裁图方面都很有心思,让观图者看上去很舒服。 佳能EOS 5D,105mm,F2.8,ISO500,1/60秒
最新发布

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();};

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

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%,如下图。

用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);

如何用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:后

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.具体解释如下:

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

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);

设计实现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; }};

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