나는이 문제에 대한 해결책을 찾았고 여러 개의 오래된 게시물을 발견했지만 그 중 아무 것도 문제를 해결하지 못하고 그 대신에 맞는 몇 가지 고유 한 해결 방법을 찾았습니다 특정 작업. 그래서 나는 누군가가 좀 더 보편적 인 것을 제안 할 수 있는지보기 위해 이것을 다시 가져 오기를 희망했다.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
쉽게 이루어졌다!
e.target 대신 e.currentTarget이 실제로 작동해야합니다. 그래서, upvoted. – tatactic
완벽한, 감사합니다! 올바른 것으로 표시되고 upvoted! – anton980
고마워요, 이것은 정말로 좋은 것처럼 보입니다. 그러나이 객체 비교가 매우 무겁지 않습니까? '.name'을 사용하여 문자열을 비교하는 것이 훨씬 더 효율적이라고 생각합니다. – Danyright