Уважаемые коллеги, был бы рад если бы вы помогли мне с поиском наиболее изящного решения следующий задачи:
______________________________________________________________________________________________________________________________________________________ ____
Открыть XML файл и считать из него информацию о подгружаемых объектах (расположение, координаты, текст)
▼
Передать информацию о файле для загрузки (путь,имя,координаты) в загрузчик
▼
Загрузчик загружает файл на сцену в объект mc_cont, и помещает его на указанные координаты
▼
◌нажатие клавиши◌
▼
▼
перемещение объекта #N в центр экрана со значением z = 0 и переход его на 2 кадр
(#N.gotoAndStop(2))
______________________________________________________________________________________________________________________________________________________ ____
При условие что в процессе можно будет менять кол-во объектов, их размер, и кол-во кадров в них.
Код, который, собственно, мне бы и хотелось по возможности улучшить
AS:
Код AS3:
import fl.transitions.easing.Strong;
import fl.transitions.Tween;
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
var myXML:XML = new XML();
var XML_URL:String = "myxml.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener("complete", xmlLoaded);
var num:int=1
var right = false;
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
var total:Number = 0;
for each (var property:XML in myXML.slide) {
Lod(
myXML.slide[total].slideID,
myXML.slide[total].sposX,
myXML.slide[total].sposY,
myXML.slide[total].sposZ
)
total ++
}
}
function Lod(fileName:String,posx:int,posy:int,posz:int):void{
var request:URLRequest = new URLRequest(fileName);
var mc:Loader = new Loader()
mc.load(request);
mc_cont.addChild(mc);
mc.x = posx
mc.y = posy
mc.z = posz
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_pressed);
function key_pressed(e:KeyboardEvent):void {
switch (e.keyCode) {
case Keyboard.RIGHT :
right = true;
go();
break;
}
}
function go():void {
var clip:DisplayObject = mc_cont.getChildAt(num);
mc_cont.setChildIndex(clip,mc_cont.numChildren-1)
var xPos:Number = (1024/2)-clip.x-70;
var yPos:Number = (768/2)-clip.y-70;
var zPos:Number = -clip.z;
new Tween(mc_cont, "x", Strong.easeOut, mc_cont.x, xPos, 2, true);
new Tween(mc_cont, "y", Strong.easeOut, mc_cont.y, yPos, 2, true);
new Tween(mc_cont, "z", Strong.easeOut, mc_cont.z, zPos, 2, true);
num--
}
XML:
Код:
<order>
<slide>
<slideID>\slide\1.swf</slideID>
<slideName>Slide 1</slideName>
<slideText>Slide 1 Text</slideText>
<sposX>500</sposX>
<sposY>500</sposY>
<sposZ>1500</sposZ>
</slide>
<slide>
<slideID>\slide\2.swf</slideID>
<slideName>Slide 2</slideName>
<slideText>Slide 2 Text</slideText>
<sposX>0</sposX>
<sposY>0</sposY>
<sposZ>500</sposZ>
</slide>
</order>
Добавлено через 19 часов 26 минут
В целом основной вопрос состоит вот в чем:
как в ф-ции go() сделать так, что бы clip.gotoAndStop(2) работал?