ColorTransform для нескольких видеоклипов

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

Я включил код ниже, и, возможно, кто-то знает, как я могу добавить к нему больше видеоклипов. Когда я копирую и изменяю mc1. Код EventListener для mc2, я получаю повторяющуюся ошибку функции, которую я не знаю, как исправить.

import flash.geom.ColorTransform;
import flash.geom.ColorTransform;
import flash.events.MouseEvent;

// this here is the little movieclip where the main clip gets its color from,the clip is made up of two movieclips but can also be one movieclip
// instead of brushColor i have used myColor and instead of brush.tip i have used square.
var myColor:ColorTransform=new ColorTransform();
myColor.color=0xffffff; square.transform.colorTransform=myColor

red.addEventListener(MouseEvent.CLICK,onclick);
green.addEventListener(MouseEvent.CLICK,onclick);
blue.addEventListener(MouseEvent.CLICK,onclick);
orange.addEventListener(MouseEvent.CLICK,onclick);
yellow.addEventListener(MouseEvent.CLICK,onclick);
pink.addEventListener(MouseEvent.CLICK,onclick);

function onclick(event:MouseEvent){

    if(event.target==red)
    {myColor.color=0xff0000}

    else if(event.target==green)
    {myColor.color=0x99ff33}

    else if(event.target==blue)
    {myColor.color=0x00ccff}

    else if(event.target==orange)
    {myColor.color=0xffcc33}


    enter code here
    else if(event.target==yellow)
    {myColor.color=0xffff66}

    else if(event.target==pink)
    {myColor.color=0xff99ff}

    else
    {myColor.color=0x666666}
    square.transform.colorTransform=myColor

}


mc1.addEventListener(MouseEvent.CLICK, colorChange);
function colorChange(event:MouseEvent)
{
    mc1.transform.colorTransform=myColor;
}


// upto here the code works fine but from below i get a  duplicate fuction error which i don't know how to fix.
// the idea is to add more movie clips so i can change their colors just like i can do for mc1.

1021: DUPLICATE FUNCTION DEFINITION "ERROR"

mc2.addEventListener(MouseEvent.CLICK, colorChange);
function colorChange(event:MouseEvent)
{
    mc2.transform.colorTransform=myColor;
}

person lottorist    schedule 26.06.2015    source источник
comment
Пожалуйста, взгляните на эти ответы вчера: /вопросы/31043957/   -  person Andre Lehnert    schedule 26.06.2015


Ответы (1)


Поместите все мувиклипы в массив, а затем добавьте к ним прослушиватель событий следующим образом:

var mcArray:Array=new Array();
mcArray.push(mc1,mc2);
for (var i:int=0;i<mcArray.length;i++)
{
    mcArray[i].addEventListener(MouseEvent.CLICK,colorChange);
}

И добавьте только одну функцию colorChange, например:

function colorChange(event:MouseEvent)
{
    e.currentTarget.transform.colorTransform=myColor;
}
person Antizam    schedule 26.06.2015
comment
ЗАМЕЧАТЕЛЬНО и спасибо вам миллион раз за вашу помощь. - person lottorist; 26.06.2015
comment
я попробовал код выше, но я получаю следующую ошибку. 1120: Доступ к неопределенному свойству e. - person lottorist; 26.06.2015
comment
Измените это: функция colorChange(e:MouseEvent) - person Antizam; 29.06.2015