Цвет под точку или из формы - PullRequest
2 голосов
/ 19 марта 2011

Я использую flash as3.

У меня есть несколько фигур, которые я нарисовал на экране.Они сделаны, используя:

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

, чтобы нарисовать их.Для забавы каждая фигура имеет свой цвет (по-разному beginFill).

Как получить цвет фигуры под указателем мыши, когда я перемещаю мышь вокруг фигур?

Я вижу дваПока что есть варианты, но я не знаю, как это сделать:
Получить цвет под мышкой, получить цвет из свойств формы (предпочтительно)

Я понятия не имею, как это сделать.... какие-нибудь советы?

Ответы [ 3 ]

2 голосов
/ 19 марта 2011

s1 = имя экземпляра мувиклипа, содержащего вашу первую фигуру
s2 = имя экземпляра мувиклипа, содержащего вторую фигуру
s3 = имя экземпляра мувиклипа, содержащего вашу третью фигуру

(должны быть разные видеоклипы)

и так далее ...

Так что вам нужно изменить эти значения.

Если вам нужны какие-либо объяснения, просто оставьте комментарий, и я вам помогу

в противном случае вы можете просто скопировать / вставить этот код:

import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;</p>

<p>var myColor:String;</p>

<p>s1.addEventListener(MouseEvent.MOUSE_OVER, storeColor1);
s2.addEventListener(MouseEvent.MOUSE_OVER, storeColor2);
s3.addEventListener(MouseEvent.MOUSE_OVER, storeColor3);</p>

<p>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);</p>

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

trace(myColor);}
</code>

функция storeColor2 (e: MouseEvent): пусто { var BmD: BitmapData = new BitmapData (s2.width, s2.height); var Bm: Bitmap = new Bitmap (BmD); BmD.draw (с2); 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 = 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 голос
/ 19 марта 2011

Самый простой способ - это, вероятно, создать свой собственный класс, чтобы вы могли сохранять свой цвет (даже случайный) в переменной и обрабатывать различные события мыши (в любом случае для использования графики требуется расширение из MovieClip) внутри одного и того же классаили вместо того, чтобы манипулировать мышью как таковой, отправляйте собственное событие, когда мышь находится над вашим спрайтом.

Другой способ - нарисовать ваши ренты в растровом объекте, а затем получить цвет пикселя с помощью позиции мыши.

Может быть, вы можете дать более подробную информацию о том, чего вы хотите достичь (может быть, вы хотите избежать использования класса)

0 голосов
/ 19 марта 2011

Вы можете получить BitmapData для своей области, а затем использовать метод getPixel, который вернет цвет этого пикселя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...