2013-07-01 4 views
0

В настоящее время у меня есть два мувиклипа, один из которых называется mcInvFrame, и один из них называется btnCloseInv (это мувиклип, и я знаю, что соглашение об именах неверно). btnCloseInv находится внутри mcInvFrame. У меня есть два файла Inventory.as и мой основной класс документа. Я могу загрузить mcInvFrame просто отлично на сцену, и все работает так, как ожидалось. Однако, когда я пытаюсь получить доступ к мувиклипу btnCloseInv, я получаю ошибки. Вот код для Inventory.as я прокомментировал мою последнюю неудачную попыткуAS3 Добавить прослушиватель событий в movieclip в movieclip

package{ 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 


public class Inventory extends MovieClip 
{ 
    public var inv:MovieClip = new mcInvFrame; 

    public function Inventory() 
    { 
     addChild(inv); 
     /*var invClose:MovieClip = inv.btnCloseInv; 
     invClose.addEventListener(MouseEvent.CLICK, CloseInventory); 
     function CloseInventory($e:MouseEvent):void 
     { 
      this.parent.removeChild(inv); 
     }*/ 
    } 
} 

}

Что мне нужно знать, может/должен я создать переменную в inventory.as для кнопки Я могу получить доступ к основному документу? Если да, то как?

P.S. Я искал форумы и пробовал различные решения, но я либо не понимал реализации, либо они не были подходящими для этой ситуации. Наиболее распространенной ошибкой, которую я получаю, является «Ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на нулевой объект». Иногда я получаю сообщение об ошибке, указывающее, что объект не имеет свойств.

+0

вы определенно поставить имя экземпляра на btnCloseInv? Если у вас есть, я думаю, ваш код должен работать. –

+0

Ну, у меня есть подходящая работа, но это не то, на что я надеялся. В Inventory.as я добавил экземпляр кнопки закрытия и позиционировал его там, где хотел, я смог заставить кнопку работать. Я хотел бы получить доступ к кнопке в mcInvFrame movieclip для работы, но я не могу понять, как создать экземпляр мувиклипа внутри другого мувиклипа. – user2540655

ответ

0

вы не можете зарегистрировать событие на stage.movieclip.movieclip2, я попытался сделать то же самое раньше, но это не будет работать, пытаться создать btnCloseInv снаружи, а затем использовать этот код

btnCloseInv.x = mcInvFrame.x + numberHere; 
btnCloseInv.y = mcInvFrame.y + numberHere2; 

если вы Безразлично «т хотите использовать этот код, AS3 - Button inside MovieClip triggers MC's event

EDIT: если вы установите mcInvFrame.buttonMode = true он не будет работать

Смежные вопросы