我正在使用flash as3。
我在屏幕上绘制了一些形状。它们是使用:
制作的graphics.beginFill(0x00ff00);
graphics.drawRect(0,0,50,50);
graphics.endFill();
画它们。每个形状都有不同的颜色(不同的beginFill)。
当我在形状周围移动鼠标时,如何获得鼠标指针下的形状颜色?
到目前为止我看到两个选择,但不知道如何做其中任何一个:
在鼠标点下获取颜色
从形状属性中获取颜色(首选)
我不知道如何做这些......任何提示?
答案 0 :(得分:2)
s1 =持有你的第一个形状的movieclip的实例名
s2 =持有你的第二个形状的movieclip的实例名
s3 =持有第三个形状的movieclip的实例名
(必须是不同的动画片段)
依旧......
因此您需要更改这些值。
如果您需要任何解释,请发表评论,我会帮助您
否则您只需复制/粘贴此代码即可:
import flash.events.MouseEvent; import flash.display.Bitmap; import flash.display.BitmapData;不过,这只是我在5分钟内编写的一些代码,可以让您了解它是如何工作的。这根本不是优化的代码。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);}
答案 1 :(得分:1)
最简单的方法可能就是创建自己的类,这样你就可以在变量中保持颜色(甚至是随机的),并在同一个类中处理不同的鼠标事件(使用图形需要从MovieClip扩展) ,或者当鼠标悬停在你的精灵上时,或者代替处理鼠标它自己的事件。
另一种方法是将你的rects绘制成一个位图对象,然后通过鼠标位置获得像素颜色。
也许你可以提供你想要达到的更多细节(也许你想避免使用课程)
答案 2 :(得分:0)
您可以获取所在区域的BitmapData,然后使用getPixel
方法,该方法将返回该像素的颜色。