Показать сообщение отдельно
Старый 06.07.2007, 17:18
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 7  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
Сделал через MovieClipLoader, но не хватает последнего штриха. А именно - не могу из onLoadInit() вызвать метод нужного мне объекта.

У меня есть инстанс объекта, который именуется appinst. У этого объекта есть метод onLoadResourceMovie(). Но когда я пытаюсь его вызвать из onLoadInit() моего листенера через команду

appinst.onLoadResourceMovie(target_mc);

то компиляция не проходит, и на этой строке мне выдается ошибка

type error Unknown variable appinst

Вот код двух моих классов, из которых и состоит проект.

Код:
class Application 
{
  var _checked_:Object={};
  private var scopeRef:MovieClip;
         
  function Application(scope:MovieClip) 
   {
    Flashout.info("Application constructor start.");
    scopeRef = scope;
   } 

  function addTextLabel()
   {
    // Программно создаем текстовое поле
    scopeRef.createTextField("tf", 0, 100, 100, 800, 600);
    scopeRef.tf.text = "Hello flasher!";
   }

  function initLoadResouceMovie()
   {
    // Загрузка ресурсов
    var dpt=10;
    
    // Инитим загружающие мувик листенеры
    var my_mcl:MovieClipLoader = new MovieClipLoader();
    var listenerinst:LoadListener = new LoadListener(my_mcl);
    my_mcl.addListener(listenerinst);
    
    // Запускаем процесс загрузки ресурсов
    scopeRef.createEmptyMovieClip("resource", dpt++);
    my_mcl.loadClip("resource.swf", scopeRef.resource);
   }

  public function giperTrace(o)
   {
    if(typeof(o)!='movieclip' || _checked_[o._target] ) return;
    trace(o);
    _checked_[o._target] = true;
    for( var p in o )
     giperTrace ( o[p]);
   }
        
  public function onLoadResourceMovie(target_mc:MovieClip)
   {
   	trace("Movieclip load complete "+target_mc);
    giperTrace(_root);
   }
 
  // --- Main Entry Point
  static function main() 
   {                
    trace("Run main function");
    var appinst:Application = new Application(_root);
    
    appinst.addTextLabel();
    appinst.initLoadResouceMovie();
   }
}
Код:
class LoadListener {
 
 var mcl:Object;
 
 public function LoadListener(target_mcl:Object)
  {
   mcl=target_mcl;
  }
 
 public function onLoadStart(target_mc:MovieClip) 
  {
   trace("********* LoadListener Start *********");
   trace("Your begin load movie clip = "+target_mc);
   var loadProgress:Object = mcl.getProgress(target_mc);
   trace(loadProgress.bytesLoaded+" = bytes loaded at start");
   trace(loadProgress.bytesTotal+" = bytes total at start");
  }

 public function onLoadProgress(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) 
  {
   trace("********* LoadListener Progress *********");
   trace("onLoadProgress() called back on movie clip "+target_mc);
   trace(loadedBytes+" = bytes loaded at progress callback");
   trace(totalBytes+" = bytes total at progress callback");
  }
  
 public function onLoadComplete(target_mc:MovieClip) 
  {
   trace("********* LoadListener Complete *********");
   trace("Your load is done on movie clip = "+target_mc);
   var loadProgress:Object = mcl.getProgress(target_mc);
   trace(loadProgress.bytesLoaded+" = bytes loaded at end");
   trace(loadProgress.bytesTotal+" = bytes total at end");
  }
  
 public function onLoadInit(target_mc:MovieClip) 
  {
   trace("********* LoadListener Init *********");
   trace("Movie clip = "+target_mc+" is now initialized");
   
   // теперь можно применять любые установки
   appinst.onLoadResourceMovie(target_mc); // <-- Эта строка не компилится
  }

 public function onLoadError(target_mc:MovieClip, errorCode:String) 
  {
   trace("********* LoadListener Error *********");
   trace("ERROR CODE = "+errorCode);
   trace("Your load failed on movie clip = "+target_mc+"\n");
  }
}
Вооот. Я честнагря в объектном программировании не силен, поэтому понять не могу, почему инстанс appinst объекта Application неизвестен в методе onLoadInit().

Посему тупой вопрос - как правильно вызвать метод одного объекта из другого?
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru