下面介绍一个用来检测饼图颜色的简单例子。
首先在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
现在可以编译运行了。效果如下图所示。这个例子没有什么特别的技巧,只需要了解事件触发机制和前面介绍的影片运作方式,很快就可以做出来。
新闻热点
疑难解答