解构涂料中的应用(二):画笔工具和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)
上一篇:没有了