合肥卓想动画工作室 承接全国+flash动画制作 + flash动画设计 + 各类flash动画制作设计


联系方式

解构涂料中的应用(二):画笔工具和Flash绘图

时间:2012-12-17 12:49来源:卓想空间http://www.zxgzs.com 作者:QQ:610929375 点击:


 

现在,我们已经成立了涂料应用的基础上,在画布上的颜色按钮的工作 ,让我们继续前进的画笔工具。
我们要做的第一件事是定义单击画笔工具时会发生什么。 主要是我们只是想让Flash知道,现在是活动的画笔
工具 - 这样,当它检查某些情况下按下鼠标时,移动或释放时,它知道如何表现。 我们再次使用该变量
_root.isactive此,最后将值设置为null /没有,但这个时候,我们想给它的实际值:
 on (release) { _root.isactive = “brush”; }
接下来的步骤是建立刷光标。 我是一个嵌套的符号,因为我想我的光标的颜色,以反映当前设置的颜色和不
透明度,我创建了一个实体填充圆,没有轮廓,将其转换为一个符号的实例名称cursorbrush的 。 然后,最
重要的是,我添加了一个黑色的轮廓,也不会改变,在与的实例名称brushcursor的一个新的符号,然后将它
们组合在一起。 通过这种方式,我可以改变的大小和位置,都在一次,但同时的脚本命令只影响内部填充不
改变的轮廓。
当前的颜色和大小并不重要,因为我们将在影片运行控制这些动态。
随着刷光标成品,返回到您的主舞台,为自己的行为创建一个图层,创建一个空的关键帧,然后右键单击该关
键帧,然后选择“ 操作”。
 _root.brushcursor.swapDepths(12) ;
这只是使用swapDepths ,以确保刷光标设置在高于一切,我们可能会创建一个深层次的,因此,没有重叠和
隐瞒。
 _root.createEmptyMovieClip(“drawing”,0) ;
 createEmptyMovieClip是一个函数,正如其名称所暗示的,在舞台上创建一个空的影片剪辑。 您可以使用其
内部的的onClipEvent处理或其它几个处理,在这种情况下,我们刚刚指定的影片剪辑的影片的第一帧的动作
,使被创建的那一刻起,它的负载。 createEmptyMovieClip参数的实例名称和深度 ;指定的实例名称,引号
里的,深度为整数,以确定其在电影中与其他对象的堆叠顺序。
我们正在使用的容器图纸。 在深度为0,使用画笔工具或任何其他工具绘制的一切,将创建空的影片剪辑内。
 _root.onMouseUp = function() { _root.onMouseMove = stoppit; }
这是一个监听器 ,监听“侦听”根级别指定的鼠标操作。 监听器监听鼠标左键被释放,然后执行该操作里面
的功能。 目前指定的操作是停止正在发生的事情,当鼠标移动(如绘画)当鼠标按钮被释放,所以它不会画
,甚至当你停止拖动郁闷的鼠标光标。
让我们来控制的行为和外观的画笔光标的移动。 这是一个相当长的代码块,让我们首先看它,然后打破它的
下一个步骤。 (嘿,我有这里的字符数限制)。
 onClipEvent (enterFrame) { mouseypos=_root._ymouse; mousexpos=_root._xmouse; if
(mouseypos>=20&&mouseypos<=532&&mousexpos>=29&&mousexpos<=666) { if (_root.isactive=="brush"){ 
 if (_root.base.palette._visible==true||_root.base.helptabs._visible==true){    Mouse.show() ;  
}   else {    _root.brushcursor._x=_root._xmouse;    _root.brushcursor._y=_root._ymouse;    
_root.brushcursor._width=_root.base.bsize;     _root.brushcursor._height=_root.base.bsize;   
cursorcolor = new Color(_root.brushcursor.cursorbrush) ;    cursorcolor.setRGB
(_root.currentcolor) ;     _root.brushcursor.cursorbrush._alpha=_root.base.opac;    Mouse.hide()
;   } }   else { _root.brushcursor._x=-100; _root.brushcursor._y=-100; Mouse.show() ; } }
 ,这些行为是分配控制器 - 我喜欢,而往往使用的东西,它是只是一个电影片段的可见区域的舞台一侧,没
有其他功能不是为我到指定的动作给它控制的其他电影的行为剪辑。 他们往往变成我的动作脚本库,让我整
理好一点。
所有这一切都是内部完成一个onEnterFrame剪辑事件分配给控制器。
脚本分配给这个特殊的控制器做了四件事情:每一次的影片剪辑进入的帧或每秒12倍,它会检查鼠标的X和Y位
置,并更新值的的变量mouseypos和mousexpos反映。
然后,它使用了一个if语句来检查,看看如果这些值在一定范围内 - 不低于一定量量不大于另一个。 这是做
检查,以确保一定的区域,定义可见绘图区域的角部的像素坐标的鼠标光标的内部。 当鼠标内可见绘图区,
我们要隐藏鼠标光标,而显示 - 除非,我们的画笔光标影片剪辑的帮助文件或颜色是可见的,因为这两个重
叠的主要画布区域。
这就是下一个if语句测试,使用if / else语句。 如果任可见,然后Mouse.show的()显示鼠标。 然而,在
所有其他情况下,else语句执行以下操作:
• 刷光标影片剪辑的x和y的位置移动到同一个地方的鼠标光标;
• 设置的刷光标的宽度和高度,使得直径反映像素值BSIZE,这是一个用户输入的值从一个文本输入框和定义
的大小的刷收集的;
• 创建一个新的Color功能和使用setRGB的嵌套刷光标剪辑的影片剪辑的填充来改变颜色;
• 设置影片剪辑的不透明性的填充,以反映其他用户输入的值;
• 隐藏鼠标。
最后,另一个else语句与第一个if语句说,如果所有这些条件没有得到满足,刷光标移动到一个区域离舞台可
见,并再次使鼠标光标可见。
呼,这是一个高大的一杯水。 所有的onEnterFrame定义的动作(也就是,在过去的两个步骤做的一切,我们
每次发生的帧播放,每秒12次),我们只需要定义一个非常简单的事情时加载的剪辑:
 _root.isactive=”brush”;
这样做是定义的工具,是活动的,当我们第一次加载应用程序,使用户可以立即开始画没有选择的工具。
现在,我们得到的东西的真正的肉:画笔工具画。 我们需要定义三种行为:当鼠标按下时,拖动鼠标,当鼠
标被释放。 让我们来看看在鼠标按下的行为:
的onClipEvent检测,当鼠标按钮被按下时,设置一个变量叫画 “真”值。 然后它的鼠标光标的X和Y位置分
配给变量。
让我们来看看在Flash绘图API,它允许您绘制在已发布的SWF动态。 API既可以绘制直线或曲线,并且可以连
接这些直线和曲线创建矩形或椭圆形。 要打破的绘图API,我们已经在这里使用的命令:
 _root.drawing.lineStyle(_root.base.bsize, _root.currentcolor, _root.base.opac) ;
请记住,空的影片剪辑? 我们正在绘制内,剪辑,并使用线型设置的属性。 线型的参数中的行的大小,颜色
,和不透明性,这可以作为输入值或作为变量。
 _root.drawing.moveTo(_root._xmouse, _root._ymouse) ;
这将影片剪辑“绘图”相同的x和y坐标的鼠标使用 moveTo。 这也正是它说,它唯一的参数是x和y坐标。 这
是该行的起点。
接下来的if语句检查,以确保刷是活动的工具和帮助文件中是不可见的,然后执行以下操作:
 _root.drawing.lineTo (_root._xmouse-1,_root._ymouse-1) ;
 lineTo的绘制一条线中定义moveTo的从起点到lineTo的参数所定义的坐标。 在这种情况下,我所做的就是创
建一个像素的线条,使用户可以“斑点”画,即使鼠标光标不动。
鼠标移动的onClipEvent的检查再利用LineTo使刷保持图:
 onClipEvent (mouseMove) { if (draw==true&&_root.base.helptabs._visible==false) { if
(_root.isactive=="brush"){   _root.drawing.lineTo(_root._xmouse, _root._ymouse) ; } }
请注意, if语句检查,看看帮助文件是可见的;否则用户也将可以画通航领域的帮助“选项卡上,同时点击。
你会看到,而不是检查,看看如果刷的是积极的工具,我们,而不是检查,看是否在以前的声明中定义的变量
是真或假,程序,如果它是真实的。 否则将画刷,即使鼠标左键不郁闷,和你将无法移动鼠标没有离开曲折
,线索背后。
既然我们已经设置的属性,画线在我们的最后一个语句块中定义它的出发点,这一切都是相对简单的声明的作
用是告诉Flash,每一次鼠标的移动,绘制一个新的生产线从原来的位置到目前的位置。 这适用于一帧一帧的
基础上,允许作为徒手画图中的单个像素的变化尽可能小。
最后,我们只需要刷停止绘图时,鼠标光标被释放:
 onClipEvent (mouseUp) { draw=false; }
是的,这真的是所有有给它。 由于MouseMove事件仅适用时抽奖= true时 ,设置抽奖[虚假]使条件的if语句
来验证,这样就不会画,当鼠标移动。 抽奖将被重新设置为 true,直到鼠标按钮被再次按下。
这只是覆盖它。 有几件事情要记住:
• 所有我的颜色,大小,和不透明度选项是聚集从输入文本框的变量,但它们也可以被设置为十六进制代码
的格式为0x000000(颜色)或数字值(0-255线重量/尺寸, 0-100不透明度)。
• 连接使用绘图API绘制的线条,将不会自动填充它,而不是创建一个描边轮廓的形状,也可以在手动或使用
ActionScript命令,我们将在下一课。
• 你应该总是输入的变量,如_root.base.opac,而不是仅仅OPAC的完整路径。 你会经常被调用的变量集的
根级别,甚至在另一个影片剪辑的影片剪辑内,你需要确保的Flash知道去哪里寻找。
• 不要怕你的主舞台侧面设置了多个电影剪辑控制器。 你要折磨几百行代码,在开发这个应用程序,如果将
它们分开到多个脚本集装箱有助于你把一切都整理和正常运行,有什么不妥的地方。

(责任编辑:卓想空间http://www.zxgzs.com)
上一篇:没有了




上海 北京 深圳 广州 成都 杭州 重庆 武汉 苏州 兰州 昆明 无锡 南昌 贵阳 太原 石家庄 包头 呼和浩特 佛山 东莞 唐山 烟台 泉州 乌鲁木齐 福州 长沙 南宁 合肥 亳州 天津 南京 沈阳 西安 青岛 大连 郑州 厦门 长春 哈尔滨 济南 宁波 温州 淄博 海口 银川 西宁 南通 大庆 徐州 潍坊 常州 鄂尔多斯 绍兴 济宁 盐城 邯郸 临沂 洛阳 东营 扬州 台州 嘉兴 沧州 榆林 泰州 镇江 昆山 江阴 张家港 义乌 金华 保定 鞍山 泰安 宜昌 襄阳 中山 惠州 南阳 威海 德州 珠海 柳州 宿迁 芜湖 岳阳 菏泽 漳州 信阳 蚌埠 绵阳 株洲 邢台 桐城 桂林 衡阳 铜陵 三亚 阜阳 荆州 遵义 咸阳 驻马店 上饶 湛江 湘潭 汕头 莆田 滁州 廊坊 赣州 肇庆 九江 德阳 淮安 曲靖 湖州 揭阳 许昌 秦皇岛 江门 新乡 潮州 商丘 宁德 吉林 连云港 常德 宜春 黄冈

卓想动画 版权所有 flash作业- 网页设计作业
返回首页   |   电话咨询   |   微信咨询