Передать идентификатор от основного SWF дочернему SWF - PullRequest
0 голосов
/ 13 октября 2009

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

Теперь, похоже, все работает нормально. Но вместо этого моя проблема заключается в том, чтобы вместо вызова каждого SWF-файла вызывать отдельный 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, и я учусь этому каждый день. Так что, если кто-то может мне помочь с этим, я был бы очень признателен. Заранее спасибо.

1 Ответ

1 голос
/ 13 октября 2009

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);
}
...