В Flash CS4 AS3.0 как изменить цвет заливки формы одним щелчком мыши? - PullRequest
1 голос
/ 15 июня 2011

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

в зависимости от цвета, который они выбирают, они должны иметь возможность заполнять формы этим цветом. Менять цвета на полпути, передумать и т.д.

У меня нет проблем с использованием более ранней версии AS, если это проще.

Ответы [ 3 ]

2 голосов
/ 15 июня 2011

вы можете использовать flash.filters.ColorMatrixFilter - есть примеры в связанной документации.

это также очень легко сделать с помощью ColorShortcuts Tweener's , назначивсвойство _Color - шестнадцатеричное значение цвета.этот метод дополнительно позволяет очень легко выцветать в цвете, при необходимости присваивая ненулевое значение требуемому свойству time.

Tweener.addTween(myShape, {time: 0.0, _Color: 0xFF0000});

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


[EDIT] вместо использования Tweener, как я поспешно предлагал ранее, или довольно сложногоColorMatrixFilter, вы можете использовать объект ColorTransform , чтобы легко изменить цвет экранного объекта.это также самый распространенный подход в AS3.Вот пример:

import flash.geom.ColorTransform;

var myShape:Shape = new Shape();
myShape.graphics.beginFill(0xFF0000, 1.0);
myShape.graphics.drawRect(0, 0, 100, 100);
myShape.graphics.endFill();

addChild(myShape);

var myColorTransform:ColorTransform = new ColorTransform;
myColorTransform.color = 0x0000FF;
myShape.transform.colorTransform = myColorTransform;

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

0 голосов
/ 15 июня 2011

Или просто используйте фильтр. Смотри DisplayObject.filters

0 голосов
/ 15 июня 2011

Я должен предупредить вас, что заставить его работать так же, как говорят, что Paint работает на самом деле довольно сложно.

Я бы посмотрел, как сделать весь ваш холст Bitmap.

Ресурсы:

  1. Bitmap
  2. BitmapData (у этого будут ключевые методы)

Когда фигуры нарисованы и все такое, используйте метод fillRect(). Для такого инструмента, как ведро с краской (например, для краски), взгляните на метод floodFill().

Я не совсем уверен, как можно было бы создать инструмент для заливки, но мой разум размышляет о том, чтобы иметь цикл, который использует getPixel(), чтобы проверить цвета каждого из пикселей вокруг, где вы нажимаете, а затем использует setPixel(), чтобы изменить цвет каждого из них. Вам нужно будет создать метод, который возвращает массив всех пикселей, которые имеют определенный цвет и не заблокированы другим цветом (то есть, чтобы вы не использовали ведро с краской и не меняли цвет all пикселей на холсте).

Вероятно, есть библиотеки для такого рода вещей.

Надеюсь, вы попадете на правильный путь.

...