2010-11-04 2 views
0

Я создал класс, содержащий все видеоклипы со сцены. Эти переменные ссылаются на имя экземпляра на сцене. Все кажется прекрасным, пока я сохраняю все свои функции в одном классе. Однако, когда я пытаюсь использовать другой класс для управления свойствами клипа, я сталкиваюсь с проблемами очистки ресурсов.(Actionscript 2.0) Передача MovieClip во внешний скрипт. Как очистить

//File (MainScreen.as) 
import utils.Container; 

class MainScreen extends MovieClip 
{ 
    private var clip1:MovieClip; 
    private var clip2:MovieClip; 
    private var container:Container 

    public function MainScreen() 
    { 
     container = new Container(clip1); 
    } 

    public function CleanUpMess() 
    { 
     container.CleanUpMess(); // <-- This part seems fine 

     //? <-- Should I be calling other things here? 
    } 
} 

Я считаю, что это связано с назначением, показанной ниже mClip = клип Я хочу передать этот фильм по ссылке для использования класса Container, но я считаю, что сборщик мусора путаться, когда есть две ссылки к тому же MovieClip. Есть ли способ, которым я могу дать ему удар, что эта ссылка больше не нужна.

//File (Container.as) 
class utils.Container 
{ 
    private var mClip:MovieClip; 
    public function Container(clip:MovieClip) 
    { 
     mClip = clip; 
    } 

    public function CleanUpMess() 
    { 
     mClip.removeMovieClip(); // <--- Doesn't seem to work 
     removeMovieClip(mClip); // <--- Doesn't seem to work 
    } 
} 

Я нашел MovieClip.removeMovieClip() в 2.0 документации Actionscript, но я думаю, что я использую это неправильно, или что это не относится к моей ситуации.

ответ

0

Если вы вызываете container.CleanUpMess();, вам не нужно настраивать что-либо еще в этом классе, если оно не находится в пределах функции CleanUpMess() в файле класса. метод CleanUpMess() находится в классе и, следовательно, имеет доступ к мувиклипу, который вы передали методу конструктора. вы должны просто вызвать переменную клипа в файле класса и изменить ее свойства.

например:

public function CleanUpMess() 
{ 
mClip.x = 10; 
mClip.y = 30; 
} 

делает эту помощь на всех?

+0

Я думаю, что мой вопрос, возможно, был немного запутанным, я обновлю его. Однако эта часть интересна ... «у вас могут возникать проблемы, когда класс, который не подключен к стадии, не распознает сцену, и вы не можете удалять элементы со сцены из этого пользовательского класса». следует ли подключать внешние классы к стадии для вызова функций очистки? – Lockyer

+0

Да, вы можете удалять экземпляры объектов класса, созданного в вашем MainScreen.as, но так как MainScreen - это один класс документа, который я предполагаю при непосредственном контакте со сценой, вы можете ссылаться на сцену. И извините, если я неправильно понял ваш вопрос, я постараюсь вам помочь, когда вы его обновите. – Kobby

+0

Нет, извините. Я верю, что у меня возникают проблемы с экземплярами MovieClips, которые остаются в памяти при завершении MainScreen. Я понимаю принципы объектно-ориентированного программирования, я путаюсь о распределении и очистке памяти для пользовательского скрипта. – Lockyer

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