2015-06-26 6 views
1

Несмотря на поиск в Интернете и youtube для решения, остается трудно найти информацию о colorTransforming нескольких видеоклипов в AS3. Я нашел видео на youtube о colorTransform, которое я выполнил шаги для создания полнофункционального 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; 
} 
+0

Пожалуйста, посмотрите это ответы со вчерашнего дня: http://stackoverflow.com/questions/31043957/actionscript3-removeeventlistener-with-function-parameter –

ответ

0

Нажмите все MovieClips в массив, а затем добавить EventListener ко всем из них, как это:

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; 
} 
+0

ЧУДЕСНОЕ и огромное спасибо за вашу помощь. – lottorist

+0

Я пробовал код выше, но я получаю следующую ошибку. 1120: Доступ к неопределенному имуществу e. – lottorist

+0

Изменить на это: function colorChange (e: MouseEvent) – Antizam

Смежные вопросы