宫格格用法

来源:互联网 发布:文言文虚词乎 编辑:程序博客网 时间:2024/06/02 14:33

主要用在ui皮肤制作

http://bbs.9ria.com/thread-160875-1-1.html

我们都知道矢量图放大不失真,而位图放大会失真,这个和它们在电脑底层的计算方法有关。为了放大一个矩形或者圆角矩形,我们可以用矢量图来绘制这个矩形,这没有问题,但是假如这个矩形同时要移动或者变形,势必给CPU带来较大的压力,因为矢量图的每一次变化都要CPU重新计算,假如你的作品本身耗费CPU较高的话,那么这种方式就差强人意了,为了最优地放大位图,Flash中引入了9宫格的方法,也叫9切片,本节详细讲述一下9宫格。


第一步:什么是9宫格?Flash中的9宫格实际上是由9个边长为偶数的正方形位图组成的能实现放大不失真的影片剪辑(这个定义是我自己总结的,但是个人觉得完全可以作为标准定义收入教材了。)9个切片分别为“左上,中上,右上;左中,中中,右中;左下,中下,右下”这9片,如下图所示:
1副本.jpg

第二步:9宫格放大原理9宫格放大时其实是这样的,四个角的四个切片向四个方向延伸,到达新的位置,然后上下两边的切片水平拉伸,左右两侧的切片垂直拉伸,中间的那个位图向四个方向放大铺满剩余区域。一图顶万言,大家看下图的放大过程:
2副本.jpg 第三步:为什么放大不失真?其实纯色的位图是可以规则拉伸变形的,就像网页的切片一样,这种变形并没有改变原来的色彩效果和排列,所以视觉上并没有失真,而最容易变形的四个角落没有让它发生形变,只是移动了位置而已,因此最后视觉上造成了“不失真”的效果。
3副本.jpg 第四步:Flash里的9宫格实现方式在flash里,9宫格是一个影片剪辑,在AS3里它是一个Sprite,(也可以是一个MovieClip,因为复杂的9切片是可以允许变色的),9宫格属性在新建影片剪辑元件时勾选了“启用9切片”选项来赋予它;而真正想不失真改变它的大小,必须利用程序来实现尺寸设置,比如一个叫mc的9切片元件,可以用下面的代码将其放大到200x100尺寸。mc.width=200;mc.height = 100;那些妄图通过按一下Q键来自由缩放大小的同学,他们的企图毕竟落空,因为这种缩放就是普通的放大变形,和我们上一步中说的原理是不一样的,因此他们最后必将看到一个让人抓狂的失真效果郁郁而终。
4副本.jpg 第五步:做一个9切片。做9切片就必须要用到Adobe的看家软件PhotoShop了,简称PS。我们在PS里打开一个圆角矩形,我们可以看到这个矩形的效果很好,有内阴影,有渐变,有投影,是一个非常漂亮的UI交互设计;首先我们把它缩小到能显示它效果的最小大小,而且边长要是3的偶数倍,因为每个边我们要三等分,并且每一份都是偶数。
5副本.jpg 第六步:利用辅助线和裁剪工具,我们把9个切片都切下来。一般这个过程都是由美工同学来完成的,笔者是个程序猿,做这个工作有点心里不爽,因为不够迅速和专业嘛,并且程序猿的虚荣心导致他们觉得这项工作没有技术含量,可是我并不这样觉得。出完的9片资源每片是10x10大小,出得足够小是为了实际使用时只放大不缩小,出好的资源如下图所示:
6副本.jpg 
第七步:接下来我们需要在Flash里制作9切片。想必这一刻你们等待很久了,终于跟教程的帖子走到了一起,我也长出一口气啊。新建一个空的文档,并且保存到你电脑的某个地方,然后按下Ctrl+F8,我们新建一个影片剪辑,在新建面板上勾选“启用9切片”选项,然后单击确定,你会发现你进入了一个带有4根长度没有尽头的虚线的影片剪辑里面,没错,这就是传说中的9宫格的编辑模式。

7副本.jpg 
第八步:将刚才出好的资源一个个拖进来,按照“左上,中上,右上;左中,中中,右中;左下,中下,右下”排列好,辅助线(那四根虚线)按照每个图片的宽度拉好位置,为了整齐好看和方便对齐,这个不是必须的但是最好对齐,像笔者这种对代码规范和元件制作规范很有洁癖的人而言,对齐是名正言顺的。
8副本.jpg 第九步:回到我们空白的舞台,从库里拖出一个刚才的9宫格元件到舞台上,让我们用色迷迷的眼神好好观察一下她的相貌,因为它的总大小只有30x30,所显得小鸟依人了一些,我们凝视着她思考一下应该做一个什么样的效果来使用这个9宫格,发挥她的最大优势。
9副本.jpg 第十步:我思考了一分钟,决定做一个背景随着输入文字多少变化的输入效果,也就是我给输入框一个底板,输入的内容越多这个底板就变得越大,反之删除文字,这个底板就变小,她总是仅仅依偎着文本的实际显示区域。 第十一步:接下来我们实现这个想法,首先写一个9宫格类NormalBackground,这个类包含了一个改变这个9宫格高度和宽度的公有方法,也有单独改变宽度和高度的方法。
10副本.jpg 第十二步:新建一个文档类Main,写下如下代码,代码简单解释如下:首先创建一个标题,提示用户输入,其次创建9宫格底板,接着创建输入文本框,并且监听文本框的change事件,实时获取文本框的大小,然后改变底板的大小。
11副本.jpg 
第十三步:下面是展示阶段,我输入文本,删除文本,底板会自动收缩变化:

13副本.jpg 
14副本.jpg


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝光喝奶粉不吃饭怎么办 九个月宝宝缺维c怎么办 九个月宝宝缺维d怎么办 9个月大宝宝缺锌怎么办 三周岁宝宝不爱吃饭怎么办 一周岁宝宝不爱吃饭怎么办 两岁半宝宝不自己吃饭怎么办 3岁宝宝不会吃饭怎么办 节食减肥胃疼怎么办呢 减肥不吃饭胃疼怎么办 过度节食伤了胃怎么办 3岁宝宝啥也不吃怎么办 1岁多宝宝不吃饭怎么办 胃口吃辣的难受怎么办 空腹吃辣椒胃疼怎么办 吃东西辣的胃口疼怎么办 吃辣的东西胃烧怎么办 吃母乳的宝宝不爱喝水怎么办 三个月宝宝不肯吃奶粉怎么办 三个月宝宝不肯喝奶粉怎么办 三个月的宝宝不肯喝奶粉怎么办 三个月的宝宝不肯吃奶粉怎么办 饿了还是没食欲怎么办 3岁半幼儿便秘怎么办 小孩字写得难看怎么办 小孩的字写的丑怎么办 小孩字写的太差怎么办 小孩很多字不会写怎么办 食欲不好吃不多怎么办 中班小孩子子不肯写字怎么办 1岁宝便秘该怎么办 两周的宝宝便秘怎么办 3岁宝宝不肯吃药怎么办 1岁婴儿不肯吃药怎么办 9月婴儿不肯吃药怎么办 半岁宝宝不吃药怎么办 1岁宝宝不爱吃药怎么办 2岁吃多了呕吐怎么办啊 小孩吃撑了吐怎么办 三岁宝宝吃太多怎么办 小孩吃撑发烧了怎么办