2014-03-24 2 views
0

감사의 말을 전하겠습니다. 8 개의 영화 클립 (무비 클립 8 개)을 처리 할 무비 클립 8 개 (square1-8)와 plus1이라는 무비 클립이 있습니다. 나는 plus1을 한 번 클릭하고 square1을 color하고, plus1을 두 번째로 누르고 square2를 color하고 싶다. 이것은 내 코드이지만 무작위로 색상이 잘못되어있는 것 같습니다. 그게 뭐가 잘못되었는지 찾도록 도와 주시겠습니까?각 동영상 클립의 색상을 연속으로 지정하는 방법

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


plus1.buttonMode=true; 
var sximata:MovieClip = square1; 
var myColorTransform:ColorTransform = new ColorTransform(); 


plus1.addEventListener(MouseEvent.CLICK, changeColour); 

function changeColour(event:MouseEvent):void 
{ 
if (contains(square1)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare1); 
    addEventListener(MouseEvent.CLICK, onsquare16); 
     } 
if (contains(square2)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare2); 
    addEventListener(MouseEvent.CLICK, onsquare3); 
} 
if (contains(square3)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare3); 
    addEventListener(MouseEvent.CLICK, onsquare4); 
} 
if (contains(square4)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare4); 
    addEventListener(MouseEvent.CLICK, onsquare5); 
} 
if (contains(square5)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare5); 
    addEventListener(MouseEvent.CLICK, onsquare6); 
} 
if (contains(square6)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare6); 
    addEventListener(MouseEvent.CLICK, onsquare7); 
} 
if (contains(square7)) 
{ 
    removeEventListener(MouseEvent.CLICK, onsquare7); 
    addEventListener(MouseEvent.CLICK, onsquare8); 
} 

myColorTransform.color = 0xBDB522; 

     sximata.transform.colorTransform = myColorTransform; 

} 



square1.addEventListener(MouseEvent.CLICK, onsquare1); 
function onsquare1(e:MouseEvent):void { 
sximata = square1; 
} 


square2.addEventListener(MouseEvent.CLICK, onsquare2); 
function onsquare2(e:MouseEvent):void { 
sximata = square2; 
} 

square3.addEventListener(MouseEvent.CLICK, onsquare3); 
function onsquare3(e:MouseEvent):void { 
sximata = square3; 
} 


square4.addEventListener(MouseEvent.CLICK, onsquare4); 
function onsquare4(e:MouseEvent):void { 
sximata = square4; 
} 


    square5.addEventListener(MouseEvent.CLICK, onsquare5); 
    function onsquare5(e:MouseEvent):void { 
sximata = square5; 
} 

square6.addEventListener(MouseEvent.CLICK, onsquare6); 
function onsquare6(e:MouseEvent):void { 
sximata = square6; 
} 

square7.addEventListener(MouseEvent.CLICK, onsquare7); 
function onsquare7(e:MouseEvent):void { 
sximata = square7; 
} 


square8.addEventListener(MouseEvent.CLICK, onsquare8); 
function onsquare8(e:MouseEvent):void { 
sximata = square8; 
} 

확인. 내 코드는 지금

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


plus1.buttonMode=true; 
minus1.buttonMode=true; 


var nextSquare:MovieClip = square1; 

var squares:Array = [square1, square2, square3, square4, square5, square6, square7, square8]; 

var myColorTransform:ColorTransform = new ColorTransform(); 


plus1.addEventListener(MouseEvent.CLICK, changeColour); 

function changeColour(event:MouseEvent):void 
{ 
    myColorTransform.color = 0x519596; 
    nextSquare.transform.colorTransform = myColorTransform; 

    var index = squares.indexOf(nextSquare); 
    if (index < squares.length - 1) { 
     nextSquare = squares[index + 1]; 
    } else { 
     trace('we are done'); 
    } 
} 

minus1.addEventListener(MouseEvent.CLICK, reversecolour); 

function reversecolour(event:MouseEvent):void 
{ 
    nextSquare.transform.colorTransform = new ColorTransform(); 
    var index = squares.indexOf(nextSquare); 
    if (index < squares.length - 1) { 
     nextSquare = squares[index - 1]; 
    } else { 
     trace('we are done'); 
     } 
    } 

처럼 보인다하지만 난이 오류를

형식 오류 얻을 : 오류 # 1009 : null 객체 참조의 속성이나 메서드에 액세스 할 수 없습니다. _fla에서 :: MainTimeline/changeColour()

답변

0

당신이 너무 많은 이벤트 핸들러가 필요한 이유를 확실하지. 배열을 사각형으로 유지하지 않고 plus1 색깔을 클릭하고 다음으로 이동할 때마다 그럴 수 있습니까? 아래 코드를 확인하십시오.

plus1.buttonMode=true; 

var nextSquare:MovieClip = square1; 

var squares:Array = [square1, square2, square3, square4, square5, square6, square7, square8]; 

var myColorTransform:ColorTransform = new ColorTransform(); 

plus1.addEventListener(MouseEvent.CLICK, changeColour); 

function changeColour(event:MouseEvent):void 
{ 
    myColorTransform.color = 0xBDB522; 
    nextSquare.transform.colorTransform = myColorTransform; 

    var index = squares.indexOf(nextSquare); 
    if (index < squares.length - 1) { 
     nextSquare = squares[index + 1]; 
    } else { 
     trace('we are done'); 
    } 
} 
+0

감사합니다! 그것은 위대한 작품! – Marianna

+0

이미 색칠되어있는 영화 클립을 계속 추적하려면 어떻게해야합니까? 말하기하자면 사각형 1-5 색깔, 무대에서 뭔가 다른 일을하고 난 나머지 색상 (square6-8) 계속합니다. 내가 어떻게 할 수 있니? – Marianna

+0

마지막 색상의 영화 클립이 nextSquare에 저장되어 있으므로 이미 처리하고 있습니다. 다음에 plus1을 클릭하면 배열의 다음 사각형이 채색됩니다. –

관련 문제