2016-10-27 15 views
0

나는이 문제에 대한 해결책을 찾았고 여러 개의 오래된 게시물을 발견했지만 그 중 아무 것도 문제를 해결하지 못하고 그 대신에 맞는 몇 가지 고유 한 해결 방법을 찾았습니다 특정 작업. 그래서 나는 누군가가 좀 더 보편적 인 것을 제안 할 수 있는지보기 위해 이것을 다시 가져 오기를 희망했다.CreateJS (Animate CC)는 클릭시 무비 인스턴스 이름을 얻습니다.

무비 클립을 들었을 때 스위치 내부에서 스위치가있는 단일 기능이 있으며 무비 클립의 이름에 따라 특정 조치가 취해집니다. CreateJS가 영화 클립 이름을 고르는 것처럼 보이지 않기 때문에, 내 영화 클립에 내 영화 클립을 할당했습니다. 그러나 어떻게 클릭했는지 쉽게 확인할 수 있습니까?

this.parentMovie.button1.name = "button1"; 
this.parentMovie.button2.name = "button2"; 
this.parentMovie.button3.name = "button3"; 

this.parentMovie.button1.addEventListener("click", onClick.bind(this)); 
this.parentMovie.button2.addEventListener("click", onClick.bind(this)); 
this.parentMovie.button3.addEventListener("click", onClick.bind(this)); 

function onClick(e) 
{ 
    console.log(this.parentMovie.button1.name); // returns the name of the movieclip just fine, so I know at least that is carried over. 

    switch(/* what do I need to put here?? */) // in AS3 it was e.target.name and it worked great. In JS it returns as null 
    { 
     case "button1": 
      // do something 
      break; 

     case "button2": 
      // do something 
      break; 

     case "button3": 
      // do something 
      break; 
    } 
} 

가 대단히 감사합니다 : AS3에서는 여기 내 코드의 조각이야 e.target.name

쉽게 이루어졌다!

답변

3

name 속성은 자동으로 생성되지 않습니다 (어쩌면 있어야 할 수도 있음). switch 문은 간단해야합니다. 대신 변수 참조를 사용해야합니다.

function onClick(e) 
{ 
    console.log(this.parentMovie.button1.name); // returns the name of the movieclip just fine, so I know at least that is carried over. 

    switch(e.currentTarget) // Use currentTarget since the button might have children 
    { 
     case this.parentMovie.button1: 
      // do something 
      break; 

     case this.parentMovie.button2: 
      // do something 
      break; 

     case this.parentMovie.button3: 
      // do something 
      break; 
    } 
} 

수행하려는 작업을 수행해야합니다.

+0

e.target 대신 e.currentTarget이 실제로 작동해야합니다. 그래서, upvoted. – tatactic

+0

완벽한, 감사합니다! 올바른 것으로 표시되고 upvoted! – anton980

+0

고마워요, 이것은 정말로 좋은 것처럼 보입니다. 그러나이 객체 비교가 매우 무겁지 않습니까? '.name'을 사용하여 문자열을 비교하는 것이 훨씬 더 효율적이라고 생각합니다. – Danyright