Передать идентификатор от основного SWF дочернему SWF

У меня есть основной видеоклип, который загружает соответствующие SWF-файлы на основе нажатия кнопки. Кнопки и соответствующие swfs загружаются через XML. Метод, который я адаптировал для достижения этой цели, можно найти здесь: Пример кода

Теперь это, кажется, работает просто отлично. Но вместо этого моя проблема заключается в том, чтобы вместо каждого отдельного нажатия кнопки вызывать отдельный SWF-файл, я хочу сохранить общий SWF-файл и изменять только соответствующий XML-контент, что-то вроде этого, чтобы сделать его более динамичным.

Вот где я застрял, я решил добавить идентификатор для каждой кнопки в XML и передать его в общий SWF (дочерний SWF), чтобы на основе идентификатора я мог загрузить соответствующий контент XML, а не вызывать отдельные SWF для каждого нажатия кнопки. XML теперь выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<menu>
  <item>
     <label>Gallery1</label>
     <url><![CDATA[swf/gallery.swf]]></url>
     <id>01</id>
  </item>
  <item>
     <label>Gallery2</label>
     <url><![CDATA[swf/gallery.swf]]></url>
     <id>02</id>
  </item>
</menu>

Теперь я могу выдвинуть этот идентификатор, а также отследить его по основному фрагменту ролика, но не знаю, как передать его в общий / дочерний SWF-файл. Я не эксперт в AS3, и я учусь этому каждый день. Так что, если кто-то может мне помочь с этим, я был бы очень признателен. Заранее спасибо.

13.10.2009 13:17:03
1 ОТВЕТ

SWF-кнопка должна реализовывать функцию, которая устанавливает свойства id. Этот метод может иметь ссылку на метод Loader-SWF, который читает Clicks.

образец:

//LOADER-SWF

// loader code:
Loader.load(urlReference);

// ... //

//in load/add to stage event
var child:IChild = Loader.content;
child.setID(1, clickFunction);

//IChild.as
//Interface
public interface IChild {
   function method setID(id:uint, callBack:Function):void;
}


//BUTTON.swf
//implement IChild

private var _id:uint;
private var _callBack:Function;

// ... //

public function method setID(id:uint, callBack:Function):void{
   _id=id;
   _callBack=callBack;
}

// ... //

private function onClick(e:MouseEvent):void{
   _callBack(_id);
}
1
13.10.2009 14:59:46
Привет Конрад, спасибо за ваш ответ. Я могу отчасти понять, что вы написали для Button.swf (Основной мувиклип). Но не могли бы вы рассказать немного подробнее о том, что происходит в Loader.swf? Ссылочная функция в Loader.swf ссылается на функцию onClick в button.swf? Кроме того, как мне реализовать интерфейс для сценариев временной шкалы, потому что я не использую классы пакетов для загрузки SWF. Спасибо еще раз за помощь.
user189110 14.10.2009 14:25:34