actionscript 3 - How to color each movieclip in a row -
i apreciate help. have 8 movieclips (square1-8) , movieclip called plus1 on stage handle 8 movieclips. want click plus1 once , color square1, press plus1 second time , color square2 , on. code seems there wrong because color random. can please me find what's wrong it?
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; }
ok. code looks
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 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 done'); } }
but error
typeerror: error #1009: cannot access property or method of null object reference. @ _fla::maintimeline/changecolour()
not sure why need many event handlers. can't keep squares in array , each time plus1
clicked color , move next? check out code below.
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 done'); } }
Comments
Post a Comment