Director 8从入门到精通

入门篇(四)

作 者 : 胡飞

ChinaByte网络学院

   下面介绍一个用来检测饼图颜色的简单例子。

   首先在Paint窗口中画彩色饼图,保存为“Circle”,在Text窗口中作输入文本“The color is:”,并保存为“Textbar”。

   将上面两个剧组成员拖到舞台上,设置他们的属性。将饼图墨水效果设置为“Matte”或“Background Transparent”,消除白色边框。在总谱中将两个成员的长度均设为一帧,放置在第一帧。

   在电影脚本中输入如下初始化脚本:

global _Color, _text

on startmovie

_text = "the color is: "

_color = rgb(0,0,0)

member("textbar").alignment = #center

member("textbar").text = _text

end

   下面分析一下取色方法。要求当鼠标点击在饼图上时必须实时检测出颜色值。因为影片以30帧每秒的速率播放,也就是说在一帧上每秒可以检测30次鼠标事件并作出相应判断,这对于鼠标事件来说时间已经足够短了。

   双击第一帧的脚本通道,在帧脚本中输入如下脚本:

on exitFrame me

check --检测鼠标事件并在当前帧循环

go the frame

end

on check

global _color, _text

repeat while the mouseDown --检测鼠标按键

if the mousemember <> member("circle") then --如果鼠标没有

--选中调色饼

exit --则退出

end if

--得到相对于调色饼的鼠标点的位置,并取该点颜色值

--注意计算该点时,是用鼠标位置减去调色饼的左上角坐标,

--而不是调色饼的位置Loc

_loc = the mouseloc - point(sprite(1).rect[1],sprite(1).rect[2])

_color = member("circle").image.getpixel(_loc)

--如果取色为黑色或白色,则退出,这样可以保证只有鼠标点中饼图时才

--检测到颜色

if (_color = rgb(0,0,0)) or (_color = rgb(255,255,255)) then

exit

end if

--在文本框中显示颜色值,并改变文本框背景色为选取色

member("textbar").text = _text &Return& _color

sprite(2).bgcolor = _color

updatestage

end repeat

end

   现在可以编译运行了。效果如下图所示。这个例子没有什么特别的技巧,只需要了解事件触发机制和前面介绍的影片运作方式,很快就可以做出来。

  

         图五:颜色检测实例

 

[上一页] [下一页]