第五部分—绘制mask shape
你只需要知道两个特别的点。一个点创建一个空的movie clip,并在其中绘制一些东西。另一个点用另一个动画来遮住一个movie clip。
好了,让我们来编码。
// 创建遮罩movie clip function drawMask(){ _root.stage.createEmptyMovieClip ("triangle", 1); with (_root.stage.triangle) { colors = [ 0xEFEFEF, 0xFFFFFF ]; alphas = [ 100, 100 ]; ratios = [ 0, 0xFF ]; matrix = { a:200, b:0, c:0, d:0, e:200, f:0, g:200, h:200, i:1 };
beginGradientFill( "linear", colors, alphas, ratios, matrix );
moveTo (_root.stage.d1._x, _root.stage.d1._y); lineTo (_root.stage.d2._x, _root.stage.d2._y); lineTo (_root.stage.d3._x, _root.stage.d3._y); lineTo (_root.stage.d4._x, _root.stage.d4._y); lineTo (_root.stage.d1._x, _root.stage.d1._y);
endFill(); //我认为不需要解释这部分。你能在Flash MX的帮助或者参考中找到它们。我是从那里拷贝过来的。 // Pretty clear, right? (很清楚了吧?) }
setPage3(); //我们需要在鼠标移动时移动和旋转movie clip Page3。这就是为什么在这里我们需要这个函数
_root.stage.page3.setMask(_root.stage.triangle); }
这是我们还需要知道的一个函数:setMask。
就个人而言,我认为这个 setMask 函数在使用时有些小bug。它不象其他函数那么好用。 我要提醒你的另一件事是,在同一级脚本里你只能用setMask一次,意思就是,如果你想同时setMask movie clip Page2,你需要创建新的 mask movie clip,并在不同级的脚本中setMask。
很难理解吗?好吧,在我的例子里,我把下一个setMask放在movie clip Page2里。
// 移动并旋转movie clip Page3 function setPage3(){
_root.stage.page3._x = _root.stage.d1._x; _root.stage.page3._y = _root.stage.d1._y;
angle = _root.getAngle(_root.stage.stage.d1._x,_root.stage.stage.d1._y, _root.stage.stage.d4._x, _root.stage.stage.d4._y); _root.stage.page3._rotation = angle + 90; //为什么这里加了90度?我不知道。我只是发现加了这个之后数字才能很好地工作
_root.stage.page3._alpha = 100; //记得我们把movie clip Page3的透明度设置为0了吗?现在我们需要把它变回去。因为movie clip Page2在Page3的下一层。 }
在这一课程中多加一条编码。 在movie clip “Stage”中:
onClipEvent (enterFrame) { _root.startSlip(); }
这一段代码使 Flash 一直检查鼠标的位置。
出处:5D多媒体
责任编辑:qhwa
上一页 第四部分-其他三个点 下一页 第六部分-在Page2中绘制 mask shape
◎进入论坛Flash专栏版块参加讨论
|