저는 15 년 넘게 Flash에서 현재 개발 중이며 최근에 Flash Actionscript 3에서 게임을 개발하기 시작했습니다. 도움이 필요해. 나는 행운이없는 해결책을 찾으려고 며칠을 보냈습니다.외부 SWF로드, MOUSE_DOWN 이벤트 할당 및 빈 공간/하위 스테이지 클릭 안 함
하위 SWF 애니메이션을로드하는 기본 SWF가 있습니다. 하나의 객체에는 5 개의 다른 애니메이션/SWF가 연관 될 수 있습니다. 그럼 닭고기 chicken01.swf, chicken02.swf가 있다고 가정 해 보겠습니다.
로드 된 SWF에 MOUSE_DOWN 이벤트를 할당 한 다음 개체를 클릭하는 동안 사용 된 도구를 기반으로 다른 애니메이션. 내 문제는 각 SWF에 클릭 할 수있는 빈 공간이 있다는 것입니다. 개체 중 일부는 서로 겹칠 수 있기 때문에 빈 개체가 아니라 클릭 할 수있는 개체 만 클릭하면됩니다. 그러면 다른 개체 뒤의 개체를 클릭하기가 어려워집니다.
하위 SWF/애니메이션은 단일 타임 라인에 있고 비트 맵 추적으로 재생하여 가져온 PNG 객체 주위의 빈 공간을 제거했습니다. 이 작업은 스테이지 크기를 객체 뒤쪽으로 줄 였지만 스테이지 크기가 객체보다 작기 때문에로드 된 SWF의 크기를 올리면 작동합니다. 그래서 객체에 너비와 높이를 할당하면 더 작은 스테이지에서 객체가 커집니다. 스테이지 크기를 객체의 크기로 제한하면 추적 된 비트 맵 이미지로도 스테이지를 계속 클릭 할 수 있습니다. 주 SWF에서 하위 SWF의 객체에 MOUSE_DOWN 이벤트를 할당하려고 시도했지만 오류가 발생합니다.
내 목표는 하위 SWF를로드하고 MOUSE_DOWN 이벤트를 할당하고 스테이지가 아닌 개체를 클릭 할 수있게하거나 개체 주위에 빈 공간을 두는 것입니다.
이것이 가능합니까? 또한 보이지 않는 버튼을 만들면서 놀았지만 다른 모양과 크기의 300 개 이상의 오브젝트에 할당하기가 어렵습니다.
다음은 내가 사용하고있는 코드 중 일부입니다.
var loadimage = foreground_list[i].imagelocation + foreground_list[i].image;
var loader:SWFLoader = new SWFLoader(loadimage,{container:tn_mc,x:current_tn_x,y:current_tn_y,name:current_name,alpha:1,width:current_tn_w,height:current_tn_h,rotation:0});
loader.load();
tn_mc.buttonMode = true;
tn_mc.addEventListener(MouseEvent.MOUSE_DOWN, tn_down);
tn_mc.addEventListener(MouseEvent.MOUSE_UP, tn_up);
addChild(tn_mc);
function tn_down(e:MouseEvent):void
{
switch (MovieClip(this.root).PointerTool)
{
case "move" :
stage.addEventListener(MouseEvent.MOUSE_UP, stage_up);
e.target.startDrag();
break;
case "play" :
var loader4:SWFLoader = new SWFLoader(foreground_list.imagelocation + foreground_list.playimage,{container:tn_mc,name:e.target.name,x:foreground_list.setx,y:foreground_list.sety,width:foreground_list.setw,height:foreground_list.seth,rotation:0});
tn_mc.removeChildAt(0);
tn_mc.addEventListener(MouseEvent.MOUSE_DOWN, tn_down);
tn_mc.addEventListener(MouseEvent.MOUSE_UP, tn_up);
loader4.load();
loader4.addEventListener(Event.COMPLETE, completeactionHandler);
break;
default :
//Some other animation
break;
}
}
전체 SWF가 아닌로드 된 SWF 내부의 인스턴스를 대상으로 지정해야합니다. – goliatone