2011-03-19 76 views
2

我使用flash as3。下一个点的颜色或形状

我有一些形状,我画在屏幕上。他们使用:

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

绘制它们。每种形状都有不同的颜色以获得乐趣(不同的beginFill)。

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

我看到两个选择,到目前为止,但不知道怎么做他们任:鼠标点 下
获得色彩得到的形状属性的颜色(首选)

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

回答

2

S1 =影片剪辑的实例名牵着你的第一个形状
S2 =影片剪辑持有的实例名您第二形状
S3 =的movieclip保持你的第三形状

(必须是不同的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);} 

功能storeColor2(E:的MouseEvent):无效 { 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);} 

功能storeColor3(E:MouseEvent)方法:无效 { VAR BMD:的BitmapData =新的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分钟内写给你它是如何工作的想法。这根本不是优化的代码。

+0

对于任何阅读此内容的人来说,它比问题所需要的更复杂,但您可以从位图数据部分找出解决方案。谢谢Zrean – David19801 2011-03-20 12:55:08

+1

一个简单的问题得到一个简单的答案。如果你发布了一个更复杂的代码,我会修改代码的答案。但目前的代码适用于上面发布的问题。 – SimplyZ 2011-03-20 18:24:44

0

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

1

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

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

也许你可以给你想要达到什么样的更多详细资料(也许你想避免使用类)

+0

+1 @Nebu创建一个扩展Sprite的类。有一个存储随机颜色的变量。有一个使用随机颜色绘制矩形的drawRectangle方法。为鼠标悬停的事件创建一个侦听器addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler),;在mouseOverHandler中,将形状颜色作为参数dispatchEvent(new ShapeOverEvent(ShapeOverEvent.OVER,myColour))派发一个自定义事件;侦听ShapeOverEvent。在父母的OVER。 – 2011-03-19 17:25:04