一点或一个SHAPE下的颜色

时间:2011-03-19 14:57:21

标签: flash actionscript-3

我正在使用flash as3。

我在屏幕上绘制了一些形状。它们是使用:

制作的
graphics.beginFill(0x00ff00);
graphics.drawRect(0,0,50,50);
graphics.endFill();

画它们。每个形状都有不同的颜色(不同的beginFill)。

当我在形状周围移动鼠标时,如何获得鼠标指针下的形状颜色?

到目前为止我看到两个选择,但不知道如何做其中任何一个:
在鼠标点下获取颜色 从形状属性中获取颜色(首选)

我不知道如何做这些......任何提示?

3 个答案:

答案 0 :(得分:2)

s1 =持有你的第一个形状的movieclip的实例名
s2 =持有你的第二个形状的movieclip的实例名
s3 =持有第三个形状的movieclip的实例名

(必须是不同的动画片段)

依旧......

因此您需要更改这些值。

如果您需要任何解释,请发表评论,我会帮助您

否则您只需复制/粘贴此代码即可:

import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;

var myColor:String;

s1.addEventListener(MouseEvent.MOUSE_OVER, storeColor1); s2.addEventListener(MouseEvent.MOUSE_OVER, storeColor2); s3.addEventListener(MouseEvent.MOUSE_OVER, storeColor3);

function storeColor1(e:MouseEvent):void { var BmD:BitmapData = new BitmapData(s1.width, s1.height); var Bm:Bitmap = new Bitmap(BmD); BmD.draw(s1); s1.addChild(Bm); myColor = BmD.getPixel(s1.mouseX,s1.mouseY).toString(16);

while(myColor.length < 6)
{
    myColor = "0" + myColor;
}

trace(myColor);}

function storeColor2(e:MouseEvent):void { var BmD:BitmapData = new BitmapData(s2.width, s2.height); var Bm:Bitmap = new Bitmap(BmD); BmD.draw(s2); s2.addChild(Bm); myColor = BmD.getPixel(s2.mouseX,s2.mouseY).toString(16);

while(myColor.length < 6)
{
    myColor = "0" + myColor;
}

trace(myColor);}

function storeColor3(e:MouseEvent):void { var BmD:BitmapData = new BitmapData(s3.width, s3.height); var Bm:Bitmap = new Bitmap(BmD); BmD.draw(s3); s3.addChild(Bm); myColor = BmD.getPixel(s3.mouseX,s3.mouseY).toString(16);

while(myColor.length < 6) { myColor = "0" + myColor; } trace(myColor);}
不过,这只是我在5分钟内编写的一些代码,可以让您了解它是如何工作的。这根本不是优化的代码。

答案 1 :(得分:1)

最简单的方法可能就是创建自己的类,这样你就可以在变量中保持颜色(甚至是随机的),并在同一个类中处理不同的鼠标事件(使用图形需要从MovieClip扩展) ,或者当鼠标悬停在你的精灵上时,或者代替处理鼠标它自己的事件。

另一种方法是将你的rects绘制成一个位图对象,然后通过鼠标位置获得像素颜色。

也许你可以提供你想要达到的更多细节(也许你想避免使用课程)

答案 2 :(得分:0)

您可以获取所在区域的BitmapData,然后使用getPixel方法,该方法将返回该像素的颜色。