2012-07-02 4 views
0

나는 마우스 오버 효과뿐만 아니라 색조를 변경하는 토글 효과 (클릭시)를 모두 가질 필요가있는 모든 버튼이 있습니다. 각 색상 변경을위한 함수를 만들었고 그 부분은 꽤 잘 작동합니다. 슬프게도 어떻게 작동하는지 토글 기능을 얻는 방법을 알 수 없습니다.플래시 as3 - 클릭 이벤트에서 인스턴스를 사용하여 변수 만들기

다음은 토글 버튼에 대한 코드입니다. 그것은 내 변수가 인스턴스가 아닌 특정 변수를 제외하고는 잘 동작합니다. 그러므로 단 하나의 버튼 만 있으면 작동합니다. 하나의 버튼에 초점을 맞춘 변수를 사용하도록 어떻게 변경할 수 있습니까?

미리 감사드립니다.

var primary = false; 

function clickOn(e:MouseEvent):void{ 
    if (primary == false)  { 
      greenHue(e.target); 
      primary = true; 
    } else { 
      noHue(e.target); 
      primary = false; 
    } 
} 

답변

0

이것은 내가 한 행동입니다.

0

응용 프로그램 디자인을 선택한 방식에 따라 다릅니다. 내 말은, 당신이 제한된 수의 버튼을 가지고 있고 그 버튼들이 정확히 무엇인지 알고 있고 (button1, button2, button3, hue, saturation, light 등) 똑같이 있다면, 세 개의 토글 변수를 가질 수 있습니다. 그래서 당신은하고 싶지 : 다음

var primaryH = false; 
var primaryS = false; 
var primaryL = false; 

, 세 가지 이벤트 선언 :

buttonH.addEventListener(MouseEvent.CLICK, clickOnH); 
buttonS.addEventListener(MouseEvent.CLICK, clickOnS); 
buttonL.addEventListener(MouseEvent.CLICK, clickOnL); 

와 세 개의 함수 선언 :

function clickOnH(e:MouseEvent):void{ 
    if (primaryH == false)  { 
      greenHue(e.target); 
      primaryH = true; 
    } else { 
      noHue(e.target); 
      primaryH = false; 
    } 
} 

...

그렇지 않으면, 가장 좋은 방법은 버튼 객체에 토글 변수와 함수를 만드는 것입니다. 그것은 "더 많은 OOP"일 것이고 동일한 것을 반복해서 쓰지 않고도 원하는만큼 많은 버튼을 만들 수 있습니다.

2

가장 좋은 방법은 버튼에 사용한 클래스를 확장하고 여기에 함수를 추가하는 것입니다. 따라서이 클래스에서 파생되는 모든 버튼에 원하는 동작을 적용 할 수 있습니다.

class ColoredButton extends Button { 
    var primary = false; 

    public function ColoredButton() { 
     this.addEventListener(MouseEvent.CLICK, clickOn); 
    } 

    private function clickOn(e:MouseEvent):void { 
     if (primary == false)  { 
      greenHue(e.target); 
      primary = true; 
     } else { 
      noHue(e.target); 
      primary = false; 
     } 
    } 

    ... 
    } 
+0

이것은 좋은 해결책 인 것처럼 보이지만, 마우스가 단추를 떠날 때 버튼을 저장해야하므로 마우스 오른쪽 단추로 놓아야합니다. 이렇게 인스턴스 이름에서 변수를 만들 수 있기를 바랬습니다. var e.target.name + "primary"= true; – Resin01

+0

이렇게하면 원하는대로 할 수 있습니다. 제 코드를 해봤습니까? – rcdmk

+0

클릭 이벤트 바로 아래에서 확장 코드로 호버 이벤트를 이동해야하며 다른 인스턴스를 간섭하지 않고 각 인스턴스에 대해 별도로 실행됩니다. 질문에 업데이트 된 코드를 게시하십시오. – rcdmk