2009-10-13 2 views
0

У меня есть основной клип, который загружает соответствующие swf на основе нажатия кнопки. Кнопки и соответствующие swf загружаются через XML. Метод, который я адаптировал для достижения этого, можно найти здесь: Sample CodeПередайте идентификатор от главного swf к дочернему 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> 

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

ответ

1

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

образец:

//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); 
} 
+0

Здравствуйте Konrad, Спасибо, за ответ. Я могу понять, что вы написали для Button.swf (Main Movie Clip). Но можете ли вы объяснить немного больше о том, что происходит в Loader.swf? Является ли clickFunction в Loader.swf ссылкой на функцию onClick в button.swf? Кроме того, как мне реализовать интерфейс для сценариев времени, потому что я не использую классы пакетов для загрузки swf. Спасибо еще раз за помощь. – 2009-10-14 14:25:34

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